我正在使用mutlisheet
从XLSX-Template生成多个工作表。
它可以工作,但生成的Excel文件包含(除了生成的工作表)模板工作表。
我找到了方法JxlsHelper#setDeleteTemplateSheet
,但它似乎没有任何影响。
代码:
try (InputStream template = ...;
OutputStream out = ...) {
Context context = new Context();
context.putVar(...);
JxlsHelper.getInstance().setDeleteTemplateSheet(true).processTemplate(template, out, context);
}
答案 0 :(得分:0)
同样的问题:
JxlsHelper.getInstance().setUseFastFormulaProcessor(false).setDeleteTemplateSheet(true).processTemplate(is, os, context);
没用。找到解决方法:
Workbook templ = WorkbookFactory.create(is);
PoiTransformer transformer = PoiTransformer.createTransformer(templ);
AreaBuilder areaBuilder = new XlsCommentAreaBuilder(transformer);
List<Area> areaList = areaBuilder.build();
Area xlsArea = areaList.get(0);
xlsArea.applyAt(new CellRef("Sheet!A1"), context);
templ.removeSheetAt(0);
templ.write(os);
答案 1 :(得分:0)
也许自定义JxlsHelper扩展了官方JxlsHelper.class并覆盖了方法JxlsHelper#processTemplate(Context context,Transformer Transformer)是一种策略, 像这样的代码:
void Main()
{
List<int> list = new List<int>(new int[]{ 1,2,3,4,5,6,7 });
try
{
Parallel.ForEach<int>(list, i => PrintEven(i));
}
catch(AggregateException ex)
{
Console.WriteLine( ex);
}
}
private static void PrintEven(int data)
{
try
{
if(data%2 != 0)
{
throw new Exception($" {data} Not Even");
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
throw;
}
}
然后,使用自定义的jxlsHelper替换官方的JxlsHelper。它有效!