gpt4 book ai didi

java - 使用 apache poi 将 .xls 转换为 csv 文件

转载 作者:行者123 更新时间:2023-11-30 11:18:34 25 4
gpt4 key购买 nike

我已将 .xls 转换为 csv 文件。我的代码工作正常。但我遇到了一个问题。就像一些单元格值有 (xxx,Md) 这些单元格值应该考虑一个值但需要两列。如何在这里纠正问题,我附上了我的代码。

try
{
FileOutputStream fos = new FileOutputStream(outputFile);
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(inputFile));
workbook.setMissingCellPolicy(Row.CREATE_NULL_AS_BLANK);
HSSFSheet sheet = workbook.getSheetAt(0);

for(int rowIndex = sheet.getFirstRowNum(); rowIndex <= sheet.getLastRowNum(); rowIndex++)
{
Cell cell=null;
Row row = null;

int previousCell = -1;
int currentCell = 0;
row = sheet.getRow(rowIndex);

for(int colIndex=row.getFirstCellNum(); colIndex < row.getLastCellNum(); colIndex++)
{
cell = row.getCell(colIndex);
currentCell = cell.getColumnIndex();

/* Cell processing starts here*/
System.out.println("coll"+colIndex);

switch (cell.getCellType())
{
case Cell.CELL_TYPE_BOOLEAN:
cellDData.append(cell.getBooleanCellValue() + ",");
System.out.println("boo"+ cell.getBooleanCellValue());
break;

case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell))
{
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
String strCellValue = dateFormat.format(cell.getDateCellValue());
cellDData.append(strCellValue +",");
}
else
{
System.out.println(cell.getNumericCellValue());
Double value = cell.getNumericCellValue();
Long longValue = value.longValue();
String strCellValue1 = new String(longValue.toString());
cellDData.append(strCellValue1 +",");
}
break;

case Cell.CELL_TYPE_STRING:
String out=cell.getRichStringCellValue().getString();
cellDData.append(cell.getRichStringCellValue().getString() + ",");
System.out.println("string"+cell.getStringCellValue());
break;

case Cell.CELL_TYPE_BLANK:
cellDData.append("" +",");
System.out.print("THIS IS BLANK");
break;

default:
break;
}
}
}
}

最佳答案

我可以想到以下两个选项:

  1. 将分隔符从 COMMA 更改为其他内容(也许是 PIPE?)
  2. 将字符串用引号 ("") 包裹起来

示例代码...

case Cell.CELL_TYPE_STRING:
String out=cell.getRichStringCellValue().getString();
if(out.contains(",")) {
out = "\""+out+"\"";
}
cellDData.append(out + ",");
System.out.println("string"+out);
break;

P.S: 你可以使用 Strnigbuilder 而不是字符串连接

关于java - 使用 apache poi 将 .xls 转换为 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23781826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com