从csv转换时,在xls / xlsx中输出错误

时间:2013-08-07 10:47:54

标签: spring apache-poi xssf poi-hssf

所以我已经将csv更改为xls / xlsx,但我每个单元格都有一个字符。我在我的csv中使用了管道(|)作为分隔符。 这是csv中的一行: 4.0 | sdfa@sdf.nb | plplplp | plplpl | plplp | 1988年11月11日| M | asdasd@sdf.ghgh | sdfsadfasdfasdfasdfasdf | asdfasdf | 3.4253242E7 | 234234.0 |真|真|

但是在excel中我得到了 4。 0 | s d f a

以下是代码:

    try {
        String csvFileAddress = "manage_user_info.csv"; //csv file address
        String xlsxFileAddress = "manage_user_info.xls"; //xls file address
        HSSFWorkbook workBook = new HSSFWorkbook();
        HSSFSheet sheet = workBook.createSheet("sheet1");
        String currentLine=null;
        int RowNum=0;
        BufferedReader br = new BufferedReader(new FileReader(csvFileAddress));
        while ((currentLine = br.readLine()) != null) {
            String str[] = currentLine.split("|");
            RowNum++;
            HSSFRow currentRow=sheet.createRow(RowNum);
            for(int i=0;i<str.length;i++){
                currentRow.createCell(i).setCellValue(str[i]);
            }
        }

        FileOutputStream fileOutputStream =  new FileOutputStream(xlsxFileAddress);
        workBook.write(fileOutputStream);
        fileOutputStream.close();
        System.out.println("Done");
    } catch (Exception ex) {
        System.out.println(ex.getMessage()+"Exception in try");
    }

1 个答案:

答案 0 :(得分:2)

管道符号必须以正则表达式转义:

String str[] = currentLine.split("\\|");

它是一个逻辑运算符(引自Javadoc of java.util.regex.Pattern):

  

X | Y X或Y