java - 将数据放在 csv 文件中的一行中

标签 java export-to-csv

我正在尝试将 xml 数据写入 csv 文件。一切工作正常,除了当数据长度太长时,它会在新行中写入数据。例如,如果地址太长,则它会转到下一行,然后写入数据。

public class ExportToCSV {

public static final String LINE_BREAK = "\n";
List<Line> lines = new ArrayList<Line>();
public static void main(String argv[]) {

    try {   File fXmlFile = new File("C:/Users/Master/Desktop/demo_jar/Eff_SOR.xml");
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile);
        doc.getDocumentElement().normalize();

        System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
        NodeList nList = doc.getElementsByTagName("record");
        System.out.println("----------------------------");
        List< Map<String, String>> list = new ArrayList<Map<String,String>>();

        for (int temp = 0; temp < nList.getLength(); temp++) {
             Map<String, String> map = new HashMap<String, String>();
             Node nNode = nList.item(temp);
             if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                   Element eElement = (Element) nNode; 

                   map.put("Address", eElement.getElementsByTagName("address_").item(0).getTextContent());                                 
                   map.put("Price1", eElement.getElementsByTagName("price1").item(0).getTextContent());                  
                   map.put("Base_qty1", eElement.getElementsByTagName("base_qty1").item(0).getTextContent());
                   map.put("base_price1", eElement.getElementsByTagName("base_price1").item(0).getTextContent());         

                   list.add(map);               
              }
        }

        generateCsvFile("C:\\Users\\Master\\Desktop\\demo_jar\\testCSV.csv", list );
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private static void generateCsvFile(String sFilename, List< Map<String, String>>  test) {
    try {
        FileWriter writer = new FileWriter(sFilename);

        writer.append("Address");
        writer.append(",");
        writer.append("Price1");
        writer.append(",");
        writer.append("Base_qty1");
        writer.append(",");
        writer.append("Price2");
        writer.append(",");
        writer.append("base_price1");
        writer.append(",");           
        writer.append(LINE_BREAK);

        for (Map<String, String> map : test) {              

        Iterator iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String,String> mapEntry = (Map.Entry<String,String>) iterator.next();
           //ystem.out.println("key: " + mapEntry.getKey() + ", value:" + mapEntry.getValue());

            writer.append(mapEntry.getValue());
            writer.append(",");
            iterator.remove();
        }
        writer.append(LINE_BREAK);
        }
        writer.flush();
        writer.close();
    }catch(Exception e){

    }
}
}

最佳答案

.csv 只是一个文本文件,其中用逗号分隔字段值 - 因此您无法控制首次在 Excel 中打开文件时显示的单元格大小。

关于java - 将数据放在 csv 文件中的一行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19901045/

相关文章:

java - 使用 Wildlfy 11 嵌入的 Apache Artemis 接收 MQTT 消息

python - 访问 python for 循环值

java 类强制转换异常错误

java - Elasticsearch精确匹配查询问题

java - "Error: Could not create the Java Virtual Machine Error: A fatal exception..."当我尝试启动 Eclipse IDE 2019-06 时显示错误

javascript - exportTableToCSV 的 JS 变量替换怎么做?

java - Jasper 在导出时报告 OutOfMemoryError

r - 如何使用 R 创建 for 循环来过滤特定行并将输出保存在新文档中?

java - 在多个 Jackson 映射器之间创建唯一配置

java - toBlockingFirst方法靠谱吗?