Я ищу, чтобы создать простой 3-столбковый файл csv, программно представляющий электронную почту. По существу, каждая строка в файле csv будет содержать 3 столбца:
Я хочу сделать это с помощью Java/Scala. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу заставить ее поместиться в 3 столбца из-за форматирования. Я сделал все, что мог, чтобы сохранить его как простую строку 1 строки (см. Ниже), но мне интересно, возможно ли это ограничение файлов csv/excel вообще, потому что я даже не могу вручную хранить html в одиночная ячейка.
Кто-нибудь знает, возможно ли это? Я хотел бы сохранить все форматирование, если это возможно, потому что на принимающей стороне это будет проанализировано и использовано для отправки реального электронного письма.
Спасибо всем заранее.
Sample Scala Script:
#!/usr/bin/env scalas
!#
import java.io.FileWriterenter
import java.io.IOException
import scala.xml.Utility
val emailAddress = "[email protected]"
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()
Как и другие, я бы рекомендовал использовать одну из существующих библиотек csv для правильного удаления всех типов символов. Вот один из них: http://opencsv.sourceforge.net/
Зависимость SBT:
"net.sf.opencsv" % "opencsv" % "2.3"
Или просто загрузите банку, так как у вас есть сценарий оболочки и поместите его в classpath.
Вы можете использовать его таким образом:
val os = ...OutputStream...
val w = new CSVWriter(new OutputStreamWriter(os, "UTF-8"))
w.writeAll // or: w.writeNext ... etc