目录

java实现csv转xlsx

java实现csv转xlsx

java实现csv转xlsx

背景

公司的项目的2.0版本,客户对csv输出文件的输出字体提出了要求,但是csv无法设置字体,需要转换成xlsx文件来做。

1. 用Python很简单,有pandas库
2. java有点复杂,要自己写,读csv,写xlsx

Python版本

import pandas as pd

def csv_to_xlsx_pd():
    csv = pd.read_csv('seq_072501.txt.1.res.csv', encoding='utf-8')
    csv.to_excel('seq_072501.txt.1.res.xlsx', sheet_name='data')


if __name__ == '__main__':
    csv_to_xlsx_pd()

java版本

import pandas as pd

    public static void csvToXLSX(String outputFilePath) {
        try {
            String csvFileAddress = outputFilePath; //csv file address
            String xlsxFileAddress = outputFilePath.replace("csv","xlsx"); //xlsx file address
            XSSFWorkbook workBook = new XSSFWorkbook();
            XSSFSheet sheet = workBook.createSheet(outputFilePath);
            sheet.setColumnWidth(35, 10000);
            sheet.setColumnWidth(36, 10000);
            sheet.setColumnWidth(37, 10000);
            sheet.setColumnWidth(38, 10000);
            sheet.setColumnWidth(39, 10000);
            sheet.setColumnWidth(40, 10000);
            CellStyle style = workBook.createCellStyle() ;
            XSSFFont font = workBook.createFont();
            font.setFontName("Courier");
            style.setFont(font);
//            style.setWrapText(true);
            int RowNum=-1;
            // 创建CSV读对象
            CsvReader csvReader = new CsvReader(csvFileAddress);
            while (csvReader.readRecord()){
                RowNum++;
                XSSFRow currentRow=sheet.createRow(RowNum);
                for(int i=0;i<csvReader.getColumnCount();i++){
                    currentRow.createCell(i).setCellValue(csvReader.get(i).trim());
                    if (i >= 35){
                        currentRow.getCell(i).setCellStyle(style);
                    }
                }
            }

            FileOutputStream fileOutputStream =  new FileOutputStream(xlsxFileAddress);
            workBook.write(fileOutputStream);
            fileOutputStream.close();
            System.out.println("Done");
        } catch (Exception ex) {
            System.out.println(ex.getMessage()+"Exception in try");
        }
    }

参考: