Java导出CSV

Java导出CSV

  • 使用jar包为csv-jar

  • maven坐标,我用的是1.3,现在已经有1.8了。

    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-csv -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-csv</artifactId>
        <version>1.3</version>
    </dependency>
    
    
  • Java代码

/**
     * 获取系统类型
     * @return
     */
    public static String getOsName() {
        return System.getProperty("os.name");
    }

    /**
     * 返回文件名
     * @param excelUnit
     * @param name
     * @return
     */
    public static String exportCsvToFile(String name) {
        String osName = getOsName();
        String pathPrefix = "";
        if (osName.startsWith("Windows")) {
            File file=new File("C:\\logFile");
            if(!file.exists()){
                file.mkdir();
            }
            pathPrefix = "C:\\logFile\\";
        } else {
            File file=new File("/usr/apache-tomcat-6.0.44/workdata/logFile");
            if(!file.exists()){
                file.mkdir();
            }
            pathPrefix = "/usr/apache-tomcat-6.0.44/workdata/logFile/";
        }

        String fileChName = pathPrefix + name + ".csv";
        BufferedWriter bufferedWriter = null;
        FileOutputStream out = null;
        try {
            out = new FileOutputStream(fileChName);
            // 避免中文乱码
            byte[] bytes = {(byte) 0xEF, (byte) 0xBB, (byte) 0xBF};
            out.write(bytes);
            bufferedWriter = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
            // 设置第一行标题
            String[] titleNames = new String[]{"时间","用户","来源","操作类型", "内容","操作IP"};
            CSVFormat csvFormat = CSVFormat.EXCEL.withHeader(titleNames);
            // 设置内容输出目标
            CSVPrinter csvPrinter = new CSVPrinter(bufferedWriter, csvFormat);
            // 输出数据
            String[] contents = new String[]{"时间xx","用户xx","来源xx","操作类型xx", "内容xx","操作IPxx"};
            List<String[]> cellValueList = new ArrayList<>();
            cellValueList.add(contents);
            for (int i = 0; i < cellValueList.size(); i++) {
                csvPrinter.printRecord(cellValueList.get(i));
            }
            return fileChName;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                bufferedWriter.flush();
            } catch (Exception e){
                e.printStackTrace();
            }
            try {
                bufferedWriter.close();
            } catch (Exception e){
                e.printStackTrace();
            }
            try {
                out.close();
            } catch (Exception e){
                e.printStackTrace();
            }
        }
    }

  • 稍微改动以上代码,标题和内容传入这个方法,就可以使用了。
posted @ 2020-11-24 16:51  darkclouds  阅读(243)  评论(0编辑  收藏  举报