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");
}
}
参考: