【发布时间】:2013-10-13 08:04:52
【问题描述】:
我希望以编程方式创建一个简单的 3 列 csv 文件来表示电子邮件。本质上,csv 文件中的每一行将包含 3 列:
- 电子邮件地址
- 主题行
- html 内容/电子邮件正文
我希望用 Java / Scala 来解决这个问题。我遇到的问题是,由于格式的原因,我似乎无法让它适合 3 列。我已经尽我所能将它保存为一个简单的 1 行字符串(见下文),但我想知道这是否可能是 csv / excel 文件的一般限制,因为我什至无法手动将 html 存储到单细胞。
有人知道这是否可能吗?如果可能,我想保留所有格式,因为在接收端这将被解析并用于发送真实的电子邮件。
提前谢谢大家。
示例 Scala 脚本:
#!/usr/bin/env scalas
!#
import java.io.FileWriterenter
import java.io.IOException
import scala.xml.Utility
val emailAddress = "abc123@gmail.com"
val subjectLine = "New Sales Are Live, Check It Out..."
val body = scala.io.Source.fromFile("sample_email.html").mkString
val writer = new FileWriter("output.csv")
(0 to 10).foreach { _ =>
writer.append(emailAddress).append(",")
.append(subjectLine).append(",")
.append(body).append("\n")
}
writer.flush()
writer.close()
【问题讨论】:
-
您需要转义字符串并删除所有换行符才能使其正常工作。您应该快速搜索解析器,有很多开源选项可以为您完成大部分工作。我还会质疑您以这种方式存储它的理由,在这样的情况下使用 XML 可能更有意义(CDATA 部分),看起来您正在为没有很多回报而自找麻烦。
-
CSV 比用逗号分隔列表要复杂一些:如何转义逗号和换行符?如果引用这些值,如何转义引号?使用现有的 CSV 库可能比尝试实现自己的库更好。但就像丹尼尔说的那样,CSV 似乎并不适合这种数据......
-
您好,感谢您的 cmets。我实际上不想使用 CSV,但不幸的是,此数据的接收者需要 CSV 格式。我将研究一个 csv 库。下面有人推荐opencsv,将从那里开始。再次感谢。