【问题标题】:POI Java to convert xlsx to CSV comma and double quotesPOI Java 将 xlsx 转换为 CSV 逗号和双引号
【发布时间】:2017-08-24 06:55:46
【问题描述】:

试图将 xlsx 转换为 CSV,其中一列有多个引号和逗号,当转换为 CSV 时,它被分隔到不同的单元格而不是一个单元格。 下面是场景,

标题移动到多个,附上代码

if(cell.getStringCellValue().contains(",")){
              if (cell.getStringCellValue().contains("\"")){
                                String t= "\""+cell.getStringCellValue()+"\"";
                                data.append(t+",");
                                }
                                else{
                                data.append("\""+cell.getStringCellValue()+"\""+",");
                                }
                            }

【问题讨论】:

  • 为什么不直接使用许多正确编写和测试的开源 CSV 库之一,它可以正确转义,而不是尝试自行开发?

标签: java excel csv apache-poi


【解决方案1】:

你需要避开这些特殊符号:

例如。如果您想将值 onetwo,three 作为 CSV 文件中的两列,请将第二列括在引号中:

one,"two,three"

要在列值中转义双引号",请将其用双引号括起来,并使用"" 转义值内的引号。例如,如果您有一个带有abc"def 的字段,则应将其转义为:

"abc""def"

因此,对于您的情况,它可能是一个衬里,而不是整个 if 声明:

data.append("\"").append(cell.getStringCellValue().replaceAll("\"", "\"\"")).append("\",");

【讨论】:

  • 感谢您的回复。我的情况如下所示,“BESPI:任务“bespi_start bespi_mon.pl -m 600,609”和用户“$AGENT_USER”的计划指标收集失败。[策略:BESPI_Collect_Router_5m]”,“P3”
  • @VICKY-TSC 我已经为你更新了我的答案。
猜你喜欢
  • 2012-05-14
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
相关资源
最近更新 更多