我有一个Excel电子表格,它有为原始数据指定的第一张表。另外还有3张图纸进行了编码,以转换和格式化原始图纸中的数据。第五张纸是最终输出。如何使用Java:
- 是否将CSV文件中的数据加载到excel文件的第一张表中
- 将第5张工作表中的数据保存到新的CSV文件中
此外,如果原始CSV有数千行,我认为在第5张表获得所有最终数据之前,多张表的转换需要一些时间-有办法知道吗?
我会采用这种方法:
- 加载特定的
.csv
文件并准备用Java读取 - 加载
.xlsx
文件,并根据您的要求和从.csv
文件中获得的数据对其进行更改。下面是如何使用Apache POI更改excel文件的一个小示例:
try
{
HashMap<Integer, ArrayList<String>> fileData; // This for example keeps the data from the csv in this form ( 0 -> [ "Column1", "Column2" ]...)
// Working with the excel file now
FileInputStream file = new FileInputStream("Data.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(file); // getting the Workbook
XSSFSheet sheet = workbook.getSheetAt(0);
Cell cell = null;
AtomicInteger row = new AtomicInteger(0);
fileData.forEach((key, csvRow) ->
{
//Update the value of the cell
//Retrieve the row and check for null
HSSFRow sheetRow = sheet.getRow(row);
if(sheetRow == null)
{
sheetRow = sheet.createRow(row);
}
for (int i = 0; i < csvRow.size(); i++)
{
//Update the value of cell
cell = sheetRow.getCell(i);
if(cell == null){
cell = sheetRow.createCell(i);
}
cell.setCellValue(csvRow.get(i));
}
});
file.close();
FileOutputStream outFile =new FileOutputStream(new File("Data.xlsx"));
workbook.write(outFile);
outFile.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
- 保存
.xlsx
文件后,可以通过以下问题创建.csv
文件