2017-03-14 11 views
2

Vaadin TableExportを使用してFilterTableに対応するExcelをエクスポートしようとしています。 Filtertableは、日付と他のクラス型の要素を格納し、いくつかの列を持っているので、私はのように特定の文字列にそれらを印刷するsetConverter機能を使用していていること:Vaadinはコンバータの値でエクスポートを実行します

filerTable.setConverter("dateColumn", dateConverter); 
filerTable.setConverter("myClassColumn", myClassConverter); 

dateConvertermyClassConverterは、その列を印刷するには、いくつかのクラスのインスタンスであります値を文字列として返します。

テーブルをExcelとしてエクスポートするときに問題が発生します。そのsetConverter変換が出力ファイルに適用されていません。たとえば、日付セルが文字列('06/01/17 0:11 'の代わりに' 42741,0080787037 ')としてエクスポートされています。 Excelファイルをエクスポートするコードセクションは次のとおりです。setConverter機能を適用した表記どおりに正確にテーブルをエクスポートする方法は、

ExcelExport exp = new ExcelExport(new CustomTableHolder(filerTable), "excel.xls"); 
exp.setRowHeaders(true); 
exp.export(); 

ありますか? add-on sourcesを見て

+1

、vaadinは、Excelエクスポート用のビルトインサポートしていません。そのためにアドオンを使用していますか(例:[TableExport](https://vaadin.com/directory#!addon/tableexport))。その場合は、アドオンへのリンクを含めてください。 –

+0

はい、私はそのアドオンを使用しています。私はその投稿に追加しました。 – Ortzi

+1

あなたはVaadin Spreadsheetを見ていませんか?あなたの問題を解決できると聞きました。 – Reborn

答えて

2

、この機能がサポートされているようですが、2つのことは、それが機能するために起こることがあります。

  • をあなたは空想PropertyFormatTable(何も、テーブルの上に単なるラッパーを使用しないする必要が

    :)このカスタム目的のために
  • ExcelExport

コードにsetUseTableFormatPropertyValue(true)を設定しました

public class ExcelExportTableComponent extends VerticalLayout { public ExcelExportTableComponent() { // basic table configuration Table table = new PropertyFormatTable(); BeanItemContainer<Person> itemContainer = new BeanItemContainer<>(Person.class); table.setContainerDataSource(itemContainer); table.setConverter("age", new AgeConverter()); // add some dummy data to the table Random random = new Random(); for (int i = 0; i < 10; i++) { itemContainer.addItem(new Person("Name " + i, "Surname " + i, random.nextInt(99) + 1)); } // add components to the layout addComponent(table); addComponent(new Button("Export to excel", event -> { ExcelExport excelExport = new ExcelExport(table); excelExport.setUseTableFormatPropertyValue(true); excelExport.excludeCollapsedColumns(); excelExport.setReportTitle("Demo Report"); excelExport.export(); })); } // basic bean for data binding public static class Person { private String name; private String surname; private int age; public Person(String name, String surname, int age) { this.name = name; this.surname = surname; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } // custom converter private static class AgeConverter implements Converter<String, Integer> { @Override public Integer convertToModel(String value, Class<? extends Integer> targetType, Locale locale) throws ConversionException { return Integer.valueOf(value.substring(0, value.indexOf(" years"))); } @Override public String convertToPresentation(Integer value, Class<? extends String> targetType, Locale locale) throws ConversionException { return String.valueOf(value) + " years"; } @Override public Class<Integer> getModelType() { return Integer.class; } @Override public Class<String> getPresentationType() { return String.class; } } } 

出力:私の知る限り

Output

+0

ありがとうございます!今それは動作します。 – Ortzi

+0

@Ortzi喜んで私は、歓声を助けることができる – Morfic

関連する問題