700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java 后端将上传的 csv 文件转为 Excel xlsx 文件

Java 后端将上传的 csv 文件转为 Excel xlsx 文件

时间:2023-03-01 22:41:59

相关推荐

Java 后端将上传的 csv 文件转为 Excel xlsx 文件

一、概述

本地文件是csv格式,将其转成xlsx或者xls

二、实现步骤

2.1 获取 csv 文件数据

由于前端的上传文件的数据类型是MultipartFile,所以就通过获取输入流的方式读取到CsvReader对象中。

然后将所有csv数据一行一行的存入到ArrayList动态数组中。

/*** 获取 csv 数据* @author 云胡* @param multipartFile* @throws IOException*/public ArrayList<String[]> getCsvDataList(MultipartFile multipartFile) throws IOException{// 存放所有的 csv 文件数据ArrayList<String[]> csvDataList = new ArrayList<>();// 文件的编码,这里设为 utf-8CsvReader reader = new CsvReader(multipartFile.getInputStream(), ',', Charset.forName("utf-8"));// 获取数据while (reader.readRecord()) {csvDataList.add(reader.getValues());}// 关闭reader.close();return csvDataList;}

2.2 生成 Excel xlsx 文件

/*** 生成 Excel 文件* @author 云胡* @param multipartFile* @return 生成的 Excel 文件名* @throws IOException*/public String csvToExcelFile(MultipartFile multipartFile) throws IOException {// 获取 csv 数据ArrayList<String[]> csvDataList = getCsvDataList(multipartFile);if(csvDataList.isEmpty()){// 没有数据return "";}// 获取拥有后缀的文件名 「abc.csv」String csvFileNameHaveSuffix = multipartFile.getOriginalFilename();// 获取不带后缀的文件名 「abc」String csvFileName = csvFileNameHaveSuffix.substring(0, csvFileNameHaveSuffix.indexOf("."));// 创建一个 xlsx 工作簿XSSFWorkbook workbook = new XSSFWorkbook();String outputExcelFileName = csvFileName + ".xlsx";FileOutputStream out = new FileOutputStream(new File(outputExcelFileName));// 创建工作表XSSFSheet spreadsheet = workbook.createSheet("Sheet1");// 将 csv 数据存到 xlsx 文件中for (int rowNum = 0; rowNum < csvDataList.size(); rowNum++) {// 获取一行的数据String[] csvFileRowData = csvDataList.get(rowNum);XSSFRow row = spreadsheet.createRow(rowNum);for (int columnNum = 0; columnNum < csvFileRowData.length; columnNum++) {XSSFCell cell = row.createCell(columnNum);cell.setCellValue(csvFileRowData[columnNum]);}}workbook.write(out);out.close();return outputExcelFileName;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。