Java创建csv文件,有“和;在其中,在Excel中正确打开

时间:2016-07-18 15:54:23

标签: java excel csv

需要创建包含此文本的csv文件:

<p><span style="color: #000000;"><strong>TEXT: </strong></span>another TEXT</strong></span>

这是我的代码:

PrintWriter testFile = new PrintWriter("C:\\JAVA\\test01.csv", "UTF-8");
String test = "<p><span style=\"color: #000000;\"><strong>Dostupnosť: </strong></span>do 2 -14 dní</strong></span>";
testFile.print("zero;one;"+test);
testFile.close();

它创建了文件,但由于某些原因我无法在Excel中打开它,当我打开它时,它只给我空白文件,其中没有文字。主要问题是,“;”在文本中间。它用作单元格分隔符并分隔另一个单元格中的文本,但我需要它保留在一个单元格中。

当我在excel中直接创建文件时,它可以正常工作。它甚至忽略了“;”和文本保留在一个单元格中。 到目前为止的答案是,可能是因为编码错误,它应该是UTF-8,但那应该没问题。

2 个答案:

答案 0 :(得分:0)

您的内容不得包含保留字符,例如分号。 为了解决这个问题,你可以使用双引号。

This answer总结了.csv

中如何以及何时分界和双引号

答案 1 :(得分:0)

如果您要创建用于excel的CSV,为什么不考虑使用Apach POI之类的内容?如果您花费太多时间来寻找写入CSV的工作方式,那么这个库可以为您解决这个问题。它很容易实现。以下是代码示例:

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.*;

import java.io.FileOutputStream;

/**
 * Working with borders
 */
public class WorkingWithBorders {
    public static void main(String[] args) throws Exception {
        Workbook wb = new XSSFWorkbook();  //or new HSSFWorkbook();
        Sheet sheet = wb.createSheet("borders");

        // Create a row and put some cells in it. Rows are 0 based.
        Row row = sheet.createRow((short) 1);

        // Create a cell and put a value in it.
        Cell cell = row.createCell((short) 1);
        cell.setCellValue(4);

        // Style the cell with borders all around.
        CellStyle style = wb.createCellStyle();
        style.setBorderBottom(CellStyle.BORDER_THIN);
        style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
        style.setBorderLeft(CellStyle.BORDER_THIN);
        style.setLeftBorderColor(IndexedColors.GREEN.getIndex());
        style.setBorderRight(CellStyle.BORDER_THIN);
        style.setRightBorderColor(IndexedColors.BLUE.getIndex());
        style.setBorderTop(CellStyle.BORDER_MEDIUM_DASHED);
        style.setTopBorderColor(IndexedColors.BLACK.getIndex());
        cell.setCellStyle(style);

        // Write the output to a file
        FileOutputStream fileOut = new FileOutputStream("xssf-borders.xlsx");
        wb.write(fileOut);
        fileOut.close();
    }
}

这是Apache's example page。这个展示了如何在单元格上放置边框,但它也展示了创建工作簿并将内容放入其中是多么容易。而且你不应该担心奇怪的怪癖,比如逃避分号或将来可能出现的任何其他怪异。