Вставить HTML в CSV программно в Java или Scala

0

Я ищу, чтобы создать простой 3-столбковый файл csv, программно представляющий электронную почту. По существу, каждая строка в файле csv будет содержать 3 столбца:

  1. адрес электронной почты
  2. Сюжетная линия
  3. html содержание/тело письма

Я хочу сделать это с помощью 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()        
  • 1
    Вам нужно будет экранировать строку и удалить все символы новой строки, чтобы она работала. Вы должны сделать быстрый поиск парсеров, есть множество вариантов с открытым исходным кодом, которые сделают большую часть работы за вас. Я бы также поставил под сомнение ваше обоснование для его хранения таким образом, возможно, было бы более целесообразно использовать XML в таком случае (разделы CDATA), кажется, что вы требуете больших хлопот, а не больших выплат.
  • 1
    CSV немного сложнее, чем просто разделение запятыми в списке: как избежать запятых и перевода строки? Если вы цитируете значения, как вы избегаете кавычек? Возможно, вам лучше использовать существующую библиотеку CSV, чем пытаться реализовать свою собственную. Но, как сказал Дэниел, CSV в любом случае не подходит для такого рода данных ...
Показать ещё 1 комментарий
Теги:
csv
excel

1 ответ

0

Как и другие, я бы рекомендовал использовать одну из существующих библиотек 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
  • 0
    Спасибо за вашу рекомендацию. У меня почти все работает сейчас, хотя теперь, похоже, он конвертирует точки с запятой в "," (цитата / запятая / цитата). Например, он преобразует ".navDate a {color: # 9e9e9e; text-ornament: none;}" в ".navDate a {color: # 9e9e9e", "text-ornament: none", "}"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню