【问题标题】:Display key as header in csv file在 csv 文件中将键显示为标题
【发布时间】:2013-10-17 08:42:21
【问题描述】:

我正在尝试创建一个 csv 文件,将此数据存储为键值对并正确显示值。如何将键显示为字段(值)的标题

 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();
           //System.out.println("key: " + mapEntry.getKey() + ", value:" + mapEntry.getValue());

            writer.append(mapEntry.getValue());
            writer.append(",");
            iterator.remove();
        }
        writer.append("\n");
        }
        writer.flush();
        writer.close();
    }

【问题讨论】:

  • “如何将键显示为字段(值)的标题”--您始终在特定标题中具有一个值。在这种情况下,首先显示所有键,然后在下一行显示值。 (逻辑结论)。
  • @CHowdappaM 我知道逻辑但我不知道如何实现
  • @HussainAkhtarWahid 感谢您的回复。实际上我知道如何手动添加它。但是使用列表如何显示我不知道的密钥
  • 获取键的集合..并且对于集合中的每个键,通过从地图中读取值来显示对应的值。

标签: java csv export-to-csv


【解决方案1】:

在你的 for 循环中试试这个代码:

 Collection<String> kys = map.keySet();
            Collection<String> vls = map.values();
            for (String k : kys) {
                 writer.append(k);
                    writer.append(",");
            }
            writer.append("\n");

            for (String v : vls) {
                 writer.append(v);
                    writer.append(",");
            }

            writer.flush();
            writer.close();

【讨论】:

  • 感谢您的回复。但我在 while 循环中提到了 mapEntry。如果我在外面提到它,那么结果文件是空白的
  • 给出你的完整代码,我可以操作它!否则调试它。
【解决方案2】:

寻找这样的东西?

package com.stackoverflow.csv;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class CreateFile {

    public static final String LINE_BREAK = "\n";
    public static final String QUOTE = "\"";
    private final StringBuilder sb;
    public CreateFile(Map<String, String> table) {
        sb = new StringBuilder();
        Iterator<String> keys = table.keySet().iterator();

        while (keys.hasNext()){
            sb.append(QUOTE + keys.next() + QUOTE);
            if (keys.hasNext())
                sb.append(", ");
        }
        sb.append(LINE_BREAK);
        Iterator<String> entries = table.values().iterator();
        while (entries.hasNext()) {
            sb.append(QUOTE + entries.next() + QUOTE);
            if (entries.hasNext())
                sb.append(", ");
        }
    }
    public String getCSV() {
        return sb.toString();
    }

    public static void main(String[] args) {
        HashMap<String,String> map = new HashMap<>();
        map.put("KEY1", "VALUE1");
        map.put("KEY2", "VALUE2");
        map.put("KEY3", "VALUE3");
        map.put("KEY4", "VALUE4");
        map.put("KEY5", "VALUE5");
        map.put("KEY6", "VALUE6");
        map.put("KEY7", "VALUE7");
        map.put("KEY8", "VALUE8");
        map.put("KEY9", "VALUE9");
        map.put("KEY10", "VALUE10");
        CreateFile app = new CreateFile(map);
        System.out.println(app.getCSV());
    }
}

【讨论】:

  • 嘿,它帮了我很多忙。我只想显示一个键
  • 请详细说明。不明白您的评论。
  • 我的意思是我想在我的示例中只显示一次密钥我试图将 xml 数据显示到 csv 文件中。所以有 5 条记录,每条记录中有很多属性。所以我想创建该属性标题,使其仅显示一次标题,而不是将每条记录显示为键值。我希望我解释清楚
猜你喜欢
  • 1970-01-01
  • 2021-08-23
  • 1970-01-01
  • 2020-10-28
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多