瀏覽代碼

数据导出

xufei 2 年之前
父節點
當前提交
109b549e41

+ 61 - 0
src/main/java/com/winhc/task/bean/Company.java

@@ -0,0 +1,61 @@
+package com.winhc.task.bean;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * company
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Company {
+    @ExcelProperty("企业名称")
+    private String name;
+    @ExcelProperty("法定代表人")
+    private String legal_entity_name;
+    @ExcelProperty("注册资本")
+    private String reg_capital;
+    @ExcelProperty("成立日期")
+    private String estiblish_time;
+    @ExcelProperty("注吊销日期")
+    private String revocation_time;
+    @ExcelProperty("登记状态")
+    private String reg_status_std;
+    @ExcelProperty("工商注册号")
+    private String reg_number;
+    @ExcelProperty("机构组织代码")
+    private String org_number;
+    @ExcelProperty("统一社会信用代码")
+    private String credit_code;
+    @ExcelProperty("纳税人识别号")
+    private String taxpayer_code;
+    @ExcelProperty("企业类型")
+    private String company_org_type;
+    @ExcelProperty("所属行业")
+    private String cate_first_code;
+    @ExcelProperty("营业期限")
+    private String to_time;
+    @ExcelProperty("核准日期")
+    private String approved_time;
+    @ExcelProperty("登记机关")
+    private String reg_institute;
+    @ExcelProperty("省份代码")
+    private String province;
+    @ExcelProperty("所属地区")
+    private String area;
+    @ExcelProperty("详细地址")
+    private String reg_location;
+    @ExcelProperty("注册地址城市")
+    private String city_name;
+    @ExcelProperty("经营范围")
+    private String business_scope;
+    @ExcelProperty("电话")
+    private String phone;
+    @ExcelProperty("更多电话")
+    private String more_phones;
+    @ExcelProperty("邮箱")
+    private String emails;
+}

+ 41 - 2
src/main/java/com/winhc/task/util/CsvToXlsxUtil.java

@@ -1,6 +1,9 @@
 package com.winhc.task.util;
 
-import org.apache.commons.lang3.StringUtils;
+import com.alibaba.fastjson.JSON;
+import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
+import com.winhc.task.bean.Company;
+import com.winhc.task.bean.Student;
 import org.apache.poi.xssf.usermodel.XSSFRow;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -109,7 +112,7 @@ public class CsvToXlsxUtil {
     }
 
 
-    public static void csvToXLSxPlus(String csvFilePath, String xlsxFilePath,String sheetName) {
+    public static void csvToXLSxPlus(String csvFilePath, String xlsxFilePath, String sheetName) {
         EasyExcelUtil easyExcelUtil = new EasyExcelUtil();
         //easyExcelUtil.init(xlsxFilePath, sheet, head);
         easyExcelUtil.init(xlsxFilePath, sheetName);
@@ -145,6 +148,42 @@ public class CsvToXlsxUtil {
         }
     }
 
+    public static void jsonToXLSxPlus(String csvFilePath, String xlsxFilePath, String sheetName, List<List<String>> heads) {
+        EasyExcelUtil easyExcelUtil = new EasyExcelUtil();
+        easyExcelUtil.init(xlsxFilePath, sheetName, heads);
+        easyExcelUtil.init(xlsxFilePath, sheetName);
+        int RowNum = -1;
+        try {
+            File file = new File(csvFilePath);
+            InputStreamReader r = new InputStreamReader(new FileInputStream(file));
+            BufferedReader reader = new BufferedReader(r);
+            String content;
+            do {
+                RowNum++;
+                System.out.println(RowNum);
+                content = reader.readLine();
+
+                if (StringUtils.isBlank(content)) {
+                    break;
+                }
+                List<Company> dataList = new ArrayList<>(1);
+                Company company = JSON.parseObject(content, Company.class);
+                dataList.add(company);
+                easyExcelUtil.doExportExcel(dataList);
+
+            } while (true);
+
+        } catch (Exception e) {
+            log.error("CsvToXlsxUtil exception :", e);
+        } finally {
+            try {
+                easyExcelUtil.finish();
+            } catch (Exception e) {
+                log.error("CsvToXlsxUtil close FileOutputStream exception :", e);
+            }
+        }
+    }
+
     /**
      * 设置excel文件的sheet名称
      * 获取CSV文件名作为Excel文件的sheet名称

+ 1 - 1
src/main/java/com/winhc/task/util/EasyExcelUtil.java

@@ -68,7 +68,7 @@ public class EasyExcelUtil {
      * ===========================================================
      * @params: dataList  要插入的数据(多行插入)
      */
-    public void doExportExcel(List<List<String>> dataList) {
+    public <T> void doExportExcel(List<T> dataList) {
         try {
             excelWriter.write(dataList, writeSheet);
         } catch (Exception e) {

+ 80 - 0
src/test/java/com/winhc/task/FileSplitV2.java

@@ -0,0 +1,80 @@
+package com.winhc.task;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
+
+import java.io.*;
+
+/**
+ * @author π
+ * @Description:
+ * @date 2022/11/4 10:44
+ */
+public class FileSplitV2 {
+    public static void main(String[] args) {
+        try {
+            String path = "D:\\Soft\\odpscmd_public\\bin\\out_export_company_data_shanxi_data_final_1112.json";
+            String prefixPath = "D:\\data\\split4\\";
+            File file = new File(path);
+            InputStreamReader r = new InputStreamReader(new FileInputStream(file));
+            BufferedReader reader = new BufferedReader(r);
+            String content;
+            StringBuffer sb = new StringBuffer();
+            String lastA = "";
+            int i = 0;
+            do {
+                content = reader.readLine();
+                if (StringUtils.isBlank(content)) {
+                    //最后一次输出
+                    File outFile = new File(prefixPath + lastA + ".json");
+//                    if (!outFile.exists()) {
+//                        sb.insert(0, head);
+//                    }
+                    OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(outFile, true));
+                    writer.write(sb.toString());
+                    writer.close();
+                    System.out.println(i);
+                    break;
+                }
+                //注:你的截取规则
+//                String[] arr = content.split(",");
+//                String a = arr[0];
+//                content = content.substring(content.indexOf(",") + 1);
+
+                JSONObject data = JSON.parseObject(content);
+                String a = data.getString("city_name");
+
+                if (a.equals(lastA)) {
+                    sb.append(content).append("\n");
+                } else {
+                    if (StringUtils.isEmpty(a)) {
+                        continue;
+                    }
+                    //标识改变,输出文件
+                    if (StringUtils.isNotBlank(lastA)) {
+                        File outFile = new File(prefixPath + lastA + ".json");
+//                        if (!outFile.exists()) {
+//                            sb.insert(0, head);
+//                        }
+                        OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(outFile, true));
+                        writer.write(sb.toString());
+                        writer.close();
+                    }
+                    //清空输出内容
+                    sb = new StringBuffer();
+                    sb.append(content).append("\n");
+                }
+                lastA = a;
+                i++;
+                if (i % 10000 == 0) {
+                    System.out.println(i);
+                }
+            } while (true);
+            r.close();
+            reader.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 40 - 0
src/test/java/com/winhc/task/TransToExcelV2.java

@@ -0,0 +1,40 @@
+package com.winhc.task;
+
+import com.winhc.task.util.CsvToXlsxUtil;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author π
+ * @Description:
+ * @date 2022/11/7 16:10
+ */
+public class TransToExcelV2 {
+    public static void main(String[] args) {
+
+        String head = "企业名称,法定代表人,注册资本,成立日期,注吊销日期,登记状态,工商注册号,机构组织代码,统一社会信用代码,纳税人识别号,企业类型,所属行业,营业期限,核准日期,登记机关,省份代码,所属地区,详细地址,注册地址城市,经营范围,电话,更多电话,邮箱";
+        List<List<String>> headList = Arrays.stream(head.split(","))
+                .map(Collections::singletonList)
+                .collect(Collectors.toList());
+
+        String path = "D:\\data\\split4";        //要遍历的路径
+        File file = new File(path);        //获取其file对象
+        File[] fs = file.listFiles();    //遍历path下的文件和目录,放在File数组中
+        for (File f : fs) {                    //遍历File[]数组
+            String csvFile = f.getAbsolutePath();
+            if (!f.isDirectory()) {
+                String fileName = f.getName();
+                System.out.println(csvFile);
+                CsvToXlsxUtil.jsonToXLSxPlus(csvFile, csvFile.replace(".json", ".xlsx")
+                        , fileName.replaceAll(".json", ""), headList);
+            }
+        }
+
+    }
+}
+
+