在包含反斜杠的Java中读取.CSV

时间:2016-10-03 13:17:05

标签: java csv jexcelapi

当我在其中读取带有'\'的单元格然后因为java转义属性而尝试将其替换为'\'时,我遇到了问题。

例如:“错误:提供的P \ jb凭证”

当我使用以下方法直接从Cell中读取此内容时

if (type == TStream.Spreadsheet) {
            try {
                FileInputStream stream = new FileInputStream(file);
                Workbook workbook = Workbook.getWorkbook(stream);
                Sheet sheet = workbook.getSheet(0);

                int rows = sheet.getRows();

                int ignored = 0;
                int parsed = 0;

                for (int i = 1; i < rows; i++) {
                    try {
                        Cell content = sheet.getCell(0, i);

然后把它放在我存储信息的对象中:

    ObjectThatIMade object_= new ObjectThatIMade();

    object_.setContent(content.getContents().replace("\\", "\\\\"));

它没有将'\'更改为'\\',我对replaceAll做了同样的事情,它也不起作用。它以相同的方式存储,当我尝试通过JSON将其发送到我的web服务时,由于字符串中的'\',它将无法工作,它会给我错误。

有没有办法保证'\'被'\\'取代?

非常感谢你的时间!

1 个答案:

答案 0 :(得分:0)

即使我尝试使用JSON对象插入它也会给我带来错误,也许我做错了什么,但我现在所做的就是在分配给JSON之前使用SELECT /*+ materialize */ CAN.CNCL_CNT, CAN.ITEM, CAN.LOCATION, CAN.LAST_CNCL_DTE, OL.CANCEL_ID FROM ORDLOC OL, (SELECT COUNT(CANCEL_DATE) AS CNCL_CNT, ITEM, LOCATION, MAX(CANCEL_DATE) AS LAST_CNCL_DTE FROM ORDLOC WHERE CANCEL_DATE between (to_date(20160123,'yyyymmdd') -60) and to_date(20160123,'yyyymmdd') AND CANCEL_DATE IS NOT NULL GROUP BY ITEM, LOCATION) CAN WHERE CAN.ITEM = OL.ITEM AND CAN.LOCATION = OL.LOCATION AND CAN.LAST_CNCL_DTE = OL.CANCEL_DATE GROUP BY CAN.CNCL_CNT, CAN.ITEM, CAN.LOCATION, CAN.LAST_CNCL_DTE, OL.CANCEL_ID 对象

它工作正常,我正在使用多个应用程序,这个应用程序包含多个解析文件,这会产生许多问题并增加不必要的复杂性。

非常感谢你的帮助!