OrangeSignalCsvで空列を挿入したい。
OrangeSignalCsvのColumnNameMappingBeanListHandlerを使用し以下のようにCSVの出力を行っているのですが
空白列を挿入したいときはどのように設定を行うのでしょうか。
lang
1ColumnNameMappingBeanListHandler m = new ColumnNameMappingBeanListHandler<TestCsvBean>(TestCsvBean.class); 2m.column("テスト1","test1"); 3m.column("テスト2","test2"); 4//空白列 5m.column("テスト3","test3"); 6//空白列 7//空白列 8m.column("テスト4","test4"); 9 10
以上、よろしくお願いします。
argiusが👍を押しています
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
CSVライブラリがどんな物かなーと思いつつ確認してみました。
「ColumnNameMappingBeanListHandler」で複数のヘッダ行を空文字にするのは無理のようでした。
ヘッダ出力なしの場合はに「ColumnPositionMappingBeanListHandler」を使う感じで可能でした。
サンプルソース
java
1package sandbox.csv; 2 3import java.io.IOException; 4import java.io.StringWriter; 5import java.util.ArrayList; 6import java.util.List; 7 8import com.orangesignal.csv.Csv; 9import com.orangesignal.csv.CsvConfig; 10import com.orangesignal.csv.handlers.ColumnPositionMappingBeanListHandler; 11 12public class ColumnPositionMappingBeanListHandlerSample { 13 public void execute3() { 14 // 列位置設定 15 ColumnPositionMappingBeanListHandler<TestCsvBean> m = new ColumnPositionMappingBeanListHandler<TestCsvBean>( 16 TestCsvBean.class); 17 m.header(false); 18 m.addColumn("test1"); 19 // 空行 20 m.addColumn("dummy1"); 21 m.addColumn("test2"); 22 // 空白列 23 m.addColumn("dummy1"); 24 // 空白列 25 m.addColumn("dummy1"); 26 m.addColumn("test3"); 27 m.addColumn("test4"); 28 29 StringWriter stringWriter = new StringWriter(); 30 stringWriter.toString(); 31 32 // 値生成 33 List<TestCsvBean> customers = new ArrayList<>(); 34 for (int i = 0; i < 10; i++) { 35 TestCsvBean bean = new TestCsvBean(); 36 bean.setTest1(i+ "112"); 37 bean.setTest2(i+ "113"); 38 bean.setTest3(i+ "114"); 39 bean.setTest4(i+ "115"); 40 // ダミーには値を設定しない。 41 customers.add(bean); 42 } 43 // 出力 44 try { 45 Csv.save(customers, stringWriter, new CsvConfig(), m); 46 } catch (IOException e) { 47 // FIXME 48 e.printStackTrace(); 49 } 50 // 51 System.out.println(stringWriter.toString()); 52 } 53} 54 55class TestCsvBean { 56 57 private String test1; 58 private String test2; 59 private String test3; 60 private String test4; 61 private String dummy1; 62 63 public String getTest1() { 64 return test1; 65 } 66 67 public void setTest1(String test1) { 68 this.test1 = test1; 69 } 70 71 public String getTest2() { 72 return test2; 73 } 74 75 public void setTest2(String test2) { 76 this.test2 = test2; 77 } 78 79 public String getTest3() { 80 return test3; 81 } 82 83 public void setTest3(String test3) { 84 this.test3 = test3; 85 } 86 87 public String getTest4() { 88 return test4; 89 } 90 91 public void setTest4(String test4) { 92 this.test4 = test4; 93 } 94 95 public String getDummy1() { 96 return dummy1; 97 } 98 99 public void setDummy1(String dummy1) { 100 this.dummy1 = dummy1; 101 } 102 103}
サンプルソースコンパイル設定
gradle
1apply plugin: 'java' 2 3// set encoding 4def defaultEncoding = 'UTF-8' 5tasks.withType(AbstractCompile).each { it.options.encoding = defaultEncoding } 6tasks.withType(GroovyCompile).each { it.groovyOptions.encoding = defaultEncoding } 7 8repositories { 9 jcenter() 10} 11 12dependencies { 13 compile 'com.orangesignal:orangesignal-csv:2.2.1' 14 15 testCompile 'junit:junit:4.12' 16}
投稿2016/03/15 09:39
総合スコア851
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/16 01:17
2016/03/16 02:28