当前位置: 首页 > 知识库问答 >
问题:

生成CSV文件,其中一些值引用,其他值不引用

郎雅昶
2023-03-14

我刚开始写CSV文件,有一个场景我找不到答案。我需要生成一个没有标题的CSV文件,其中数字值不带引号,字符串带引号。例如-71,72,“初始”,“2020-10-01”。

我使用的CSVWriter构造函数:

CSVWriter(FileWriter(ClassLoader.getSystemResource("mytable.csv").path), ',', '\'', '\"', "\n")

我试图用双引号填充字符串值,但这不起作用。

val linesForCSVUploadToTable = arrayOf(
                    someId.toString(),
                    someOtherId.toString(),
                    "\"initial\"",
                    "\"2020-10-15\"",
                    "\"2020-10-15\"",
                    "\"csv\"",//created_by
                    "\"2020-10-15\"",
                    "\"csv\"",
                    "\"csv\"",
                    "\"2020-10-15\""
            )

输出为:

'100001','100001','""initial""','""2020-10-15""','""2020-10-15""','""csv""','""2020-10-15""','""csv""','""csv""','""2020-10-15""'

我必须。toString ID,因为writeAll()和writeNext()函数似乎采用字符串数组,并且不接受任何类型的数组。

我想避免编写自己的自定义CSV编写器。如果我必须这样做,那就这样吧。

我正在使用OpenCSV 5.2并在Kotlin中编写这篇文章。Java也可以工作。

任何帮助都将不胜感激!谢谢

共有1个答案

白高逸
2023-03-14

您可能应该使用Apache Commons CSV,它提供了NON_NUMERIC引用策略,从而引用CSV文件中的任何非数字值。示例:

try (Writer w = ...) {
    CSVFormat outFormat = CSVFormat.newFormat(',')
        .withRecordSeparator("\n")
        .withQuote('\"')
        .withQuoteMode(QuoteMode.MINIMAL);
    CSVPrinter printer = new CSVPrinter(w, outFormat);
    printer.printRecords(...);
}
 类似资料:
  • 我有一系列的桌子,比如: 我如何向graphQL指出以下信息:firstName是“Joe”,公司名称,办公地址(仅Joe所属的办公地址)。 如果这是一个单独的请求,我可以设置“上下文”来谈论“joe” 我可以使用graph ql查询模式来添加进一步的上下文限制(用户:“Joe”) 由于这是针对多人的,因此我看不出有一种方法可以根据前一个对象中提供的信息进一步细化查询。 使用:Ruby lates

  • 问题内容: 我们最近切换到了新的JSON2 perl模块。我以为一切都归还了。但是我遇到了一些情况,其中perl创建的json字符串中的数字()作为未引用的数字返回。 出于好奇: 是否有人知道为什么存在这种情况以及json模块如何决定是否引用值? 问题答案: 您可以通过执行以下操作将其强制为字符串: 例如: 看起来旧版本的JSON具有可以设置的自动转换功能。您没有设置为真值吗?

  • 问题内容: 我有一个包含一个表的数据库,我想用该表的值生成CSV文件。 实际上,我想通过电子邮件将此CSV文件作为附件发送。我知道将文件作为附件发送到电子邮件中,但是我不知道创建过程或创建CSV格式文件的方法。 请给我建议或想法。 问题答案: 你可以用这个 从这里下载库: http://sourceforge.net/projects/opencsv/ 在这里,您可以找到jar文件。 在您的活动中

  • 这是一个古老的问题(#1、#2),我仍然在纠结于这个问题。现在尝试使用一个简单的SQL查询: 正在努力进行此SQL查询: 我需要所有的post_id,其中='services'和='publish',并且关联的()的值为1(一)。然后使用我使用另一个()传递的另一个元值对结果进行排序。如果我从查询中删除,那么就会得到这些post ID,但对于上面的查询,我什么也得不到。 我该怎么做呢?

  • 问题内容: 我使用以下Java代码创建了一个CSV文件: 我正在获取CSV文件,但是文件内容中有不需要的双引号。 例如。“ ABC”,“ 123”,“ KDNJ” 我不知道从何处添加这些双引号。 问题答案: 这对我有用 参见CSVWriter javadoc