标签: jxls

如何在转换模板中的JXLS API中动态合并单元格

我正在使用Jxls API

我现在可以创建,将数据列表传递给模板,根据需要创建excel输出表

但现在我必须合并具有相同值的列单元格

这是重复细胞的每个标签

<jx:forEach items="${dummyData}" var="dummy" groupBy="col1">
<jx:forEach items="${group.items}" var="myList123">
${myList123.col1} ${myList123.col2} ${myList123.col3} ${myList123.col4} ${myList123.col5} ${myList123.col6} ${myList123.col7}
</jx:forEach>
</jx:forEach>
Run Code Online (Sandbox Code Playgroud)

是)我有的

我想要的是

java excel jxl jxls

11
推荐指数
1
解决办法
4700
查看次数

使用java在xlsx和xls文件中搜索

我有一个大的xlsx文件,我必须实现搜索选项的大量数据我使用了Apache POI jar以及jxl jar,以便在行和列之间进行搜索.但是需要花费大量时间来遍历大数据,有些人可以帮助我,这是任何jar文件或任何其他可用于在Excel文件上更快地进行搜索的概念......

    String searchValue="my_value_to_search";
    for (int i = 0; i < sheet.getColumns(); i++) {
        for (int j = 0; j < sheet.getRows(); j++) {
            value = sheet.getCell(i, j);
            valueType = value.getType();
            String val=getCellType(valueType, value);
            if (val != null&&val==searchValue) {
                //   To do manipulation.
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

java excel jxl apache-poi jxls

10
推荐指数
1
解决办法
3238
查看次数

写入现有的Excel文件

 package jexcel.jxl.nimit;

    import java.awt.Label;  
    import java.io.File;  
    import java.io.IOException;

    import jxl.Cell;   
    import jxl.CellType;  
    import jxl.LabelCell;  
    import jxl.NumberCell;  
    import jxl.Sheet;  
    import jxl.Workbook;  
    import jxl.read.biff.BiffException;  
    import jxl.write.WritableCell;  
    import jxl.write.WritableSheet;  
    import jxl.write.WritableWorkbook;  
    import jxl.write.WriteException;  
    import jxl.write.biff.RowsExceededException;  

    public class ExcelJxl {

    /**
     * @param args
     * @throws IOException 
     * @throws BiffException 
     * @throws WriteException 
     * @throws RowsExceededException 
     */
    public static void main(String[] args) throws BiffException, IOException, RowsExceededException, WriteException {
        // TODO Auto-generated method stub
             ExcelJxl.WriteFile("D:\nimit.xls");
    }

    public static void WriteFile(String path) throws BiffException, IOException, RowsExceededException, …
Run Code Online (Sandbox Code Playgroud)

java jxl jxls

7
推荐指数
1
解决办法
3万
查看次数

POI XSSF是否还有疯狂的坏内存问题?

几年前,我遇到了使用jXLS和创建大型Excel文件的问题POI XSSF.如果我的记忆是正确的,我认为XSSF会在磁盘上创建类似1GB +临时文件的内容来创建10mb excel文件.所以我停止使用jXLS,而是用来SXSSF创建excel文件,但今天我有新的理由使用jXLSJETT.

无论jXLSJETT网站似乎暗示,业绩要好得多,但POIXSSF网站仍然表示一般的XSSF要求更高的内存占用.我想知道这些更高的内存占用量是否像现在合理的10%开销,或者它仍然像几年前的10,000%开销一样.

POI 3.9修复了疯狂的坏内存问题XSSF吗?我应该不用担心使用它jXLSJETT?还是有某些难以避免的陷阱?重用细胞样式我很小心.

java apache-poi xssf jxls jett

7
推荐指数
1
解决办法
5398
查看次数

Jxls错误:无法加载XLS转换器.请确保Transformer实现在classpath中

这个问题已经被问过一次,但没有人给出绝对的解决方案.我试图从现有模板生成一个xls文件,但我得到一个错误,我不知道如何面对!

我的代码:String nombre ="Manuel";

        try (InputStream templateFileName = ExportExcelServlet.class.getResourceAsStream("/segJBOSS/lib/xls/Tabla_Gestion.xlsx")) {
            try (OutputStream destFileName = new FileOutputStream("Tabla_Gestion.xls")) {
                ArrayList<String> array = new ArrayList<String>();
                array.add(nombre);
                Context context = new Context();
                context.putVar("gestion", array);
                JxlsHelper.getInstance().processTemplate(templateFileName, destFileName, context);              
                } catch (Exception e) {
                // TODO: handle exception
                System.out.println(e.getMessage());
                e.printStackTrace();                
                }

        } catch (Exception e) {
            // TODO: handle exception
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    } catch (Exception e) {
        // TODO: handle exception
        System.out.println(e.getMessage());
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

这是在WebServlet中实现的.

17:08:43,472 ERROR [org.jxls.util.TransformerFactory] (default task-3) Method createTransformer of org.jxls.transform.poi.PoiTransformer class …
Run Code Online (Sandbox Code Playgroud)

java excel jxl jxls

6
推荐指数
1
解决办法
5822
查看次数

如何将 JXLS 从版本 1 迁移到版本 2

JXLS 2 不向后兼容版本 1。没有升级说明,虽然我可以使用版本 2,但我遇到了两个问题。

  • 版本 1 不需要使用注释标签,但现在我无法在没有它们的情况下生成输出。

  • Java 代码必须指定在哪个工作表位置写入结果,在版本 1 中,输出写入在模板之上,不需要在 Excel 和 Java 代码中重复模板设置。

如果我找不到解决这两个问题的方法,我将不得不更改每个模板以使用注释。但更糟糕的是,我还必须让我的 java 代码了解模板工作表布局。我不明白为什么这是默认行为。有没有办法让版本 2 的行为更像版本 1?

java excel jxls

5
推荐指数
1
解决办法
978
查看次数

JXLS 根据内容自动调整行高

我正在使用带有 apache poi 实现的 JXLS 2.3.0。
我使用以下代码来创建 excel :

try{
   InputStream is = ObjectCollectionDemo.class.getResourceAsStream("/template.xls")
   OutputStream os = new FileOutputStream("target/output.xls")  
   Context context = new Context();
   context.putVar("employees", employees);
   JxlsHelper.getInstance().processTemplate(is, os, context);

   }
Run Code Online (Sandbox Code Playgroud)

我生成的 excel 文件如下所示:

在此处输入图片说明

如上图所示,第一个“名称”值仅显示部分内容。

但我想要的是:

在此处输入图片说明

即excel单元格中的内容可以换行,行高可以自动适应单元格内容。

我怎样才能做到这一点?提前致谢。

- - - - - - - 更新 - - - - - - - - -

解决办法是:

  1. 正如@Andy所说的那样
  2. wrap text在模板文件中一样格式化相应的单元格
  3. (可选)在第1步和第2步之后,可以显示单元格内容的99%信息,但仍然会遗漏一些。然后我打开模板文件,发现它看起来像下一个:

在此处输入图片说明

我们可以发现}of${a.name}在新的一行,改成:

在此处输入图片说明

即make${a.name}在一行,则可以显示所有内容。

apache-poi jxls

4
推荐指数
1
解决办法
3119
查看次数

当行数大于10,000时,jxls文件生成将永远挂起

我有一个生成的Excel报告。在大多数情况下,当行数达到大约2,000时,它就可以正常工作。

今天早上,我试图生成一个包含11,000行的报告,由于它遵循相同的未更改代码,因此无法弄清为什么它会挂起-请参见下文。除了XLSTransformer可能真的很慢之外,我仍然无法弄清楚吗?

List<Map<String, Object>> maps = new ArrayList<Map<String, Object>>();
    Map<String, Object> sheetData = null;
    for(EntityForecastWrapper wrapper : wrappers) {
        sheetName = Integer.toString(wrapper.getEntityId());
        sheetNames.add(sheetName);
        sheetData = new HashMap<String, Object>();
        sheetData.put("wrapper", wrapper);
        maps.add(sheetData);
    }
    Map<String, Object> beansMap = new HashMap<String, Object>();
    Workbook workbook = null;
    XLSTransformer transformer = new XLSTransformer();
    try {
        Logger.getLogger(getClass()).error("generating excel");
        InputStream is = getClass().getResourceAsStream(getReportTemplate().getLabel());
        workbook = transformer.transformMultipleSheetsList(is, maps, sheetNames, "map", beansMap, 0);
        Logger.getLogger(getClass()).error("generated excel");
        /*FileOutputStream fos = new FileOutputStream(new File(fileName));
        workbook.write(fos);
        fos.flush();
        fos.close();*/
    } catch(Exception e) {
        Logger.getLogger(getClass()).error("Error …
Run Code Online (Sandbox Code Playgroud)

java performance jxls

3
推荐指数
1
解决办法
4097
查看次数

我可以一起使用jxls和apache poi吗?

我正在制作一个用于分析某些数据的应用程序,并且结果必须在excel文件中显示。从这个意义上讲,我开始使用Apache POI(3.11)。由于某些报告要花费大量时间和内存来进行复制,因此我进行了调查,发现jxls,经过一些测试,我认为这是解决方案。但是现在我发现了一个问题:不能同时使用两个框架。

  1. 我必须将Apache POI从3.11更新到3.14,以便使用jxls-2.3.0
  2. 我做了一个额外的包装,以便使用jxls进行测试,没问题
  3. 我尝试将我的一个类从Apache POI迁移到jxls,并且出现此错误:java.lang.IllegalStateException: Cannot load XLS transformer. Please make sure a Transformer implementation is in classpath。这是我的方法的代码:

    private void prepareNewReport(File excelFile) {
        List perforaciones = makePerforacionReport
                                                .makePerforacionData(escenario);
    
    
    try (InputStream is =  ReportePerforacionTotalDialog.class
                    .getResourceAsStream("PerforacionTotal_template.xls")){
        try (OutputStream os = new FileOutputStream(excelFile)) {
            Context context = new Context();
            context.putVar("perforaciones", perforaciones);
            JxlsHelper.getInstance().processTemplate(is, os, context);
            LOGGER.logger.log(Level.INFO, "Archivo de perfortacion generado con éxito");
        }
    } catch (IOException e) {
        LOGGER.logger.log(Level.SEVERE, "Problemas buscando el archivo", e);
    }
    
    Run Code Online (Sandbox Code Playgroud) }
    Run Code Online (Sandbox Code Playgroud)

这怎么可能?在同一个项目中,我有测试类,只有另一个软件包,并且可以正常工作。如您所见,它与jxls页面中的示例没有太大不同,并且导入是相同的。

但更糟糕的是,当我尝试清理和构建项目时,又遇到了另一个错误:

java.lang.RuntimeException: com.sun.tools.javac.code.Symbol$CompletionFailure: …
Run Code Online (Sandbox Code Playgroud)

apache-poi jxls

2
推荐指数
1
解决办法
1852
查看次数

POI - ZIP条目大小太大

我使用JXLS来创建我的woorkbook.JXLS使用下面的POI.要创建工作簿,JXLS需要文件或输入流.

使用文件对象,我得到了我想要的woorkbook.但是,随着流我得到错误ZIP条目大小太大.

JXLS lib使用

WorkbookFactory.create()

创建工作簿的方法.所以,我尝试使用ZipStream和PushbackStream; 没有帮助.我能够从我的Junit运行相同的代码.

我看了下面的帖子. 当尝试使用Apache POI打开Excel文件时,为什么会出现异常"IOException:ZIP条目大小太大"?.

该帖子的解决方案是Maven的变化.但是,这篇文章没有提到Maven所做的改变.

你有什么建议吗?

java excel apache-poi maven jxls

1
推荐指数
1
解决办法
3783
查看次数

jxls2 中 jx:each 内 jx:each 的语法是什么

我已经使用 jxls 1.0.5 一段时间了,最​​近发现需要迁移到 2.2.5,

在 jxls 1.0.5 中,我可以将一个语句嵌入另一个语句中。

<jx:forEach items="${homeDwellers}" var="homeDweller">
<jx:forEach items="${homeDweller.chores}" var="chore">
</jx:forEach>
</jx:forEach>
Run Code Online (Sandbox Code Playgroud)

在 2.2.5 中,我只输入 jx:each 的注释,这是如何完成的?

A1: jx:each(items="homeDwellers" var="homeDweller" lastCell="B3")
A2: jx:each(items="homeDweller.chores" var="chore" lastCell="B2")
Run Code Online (Sandbox Code Playgroud)

??

jxls

1
推荐指数
1
解决办法
7936
查看次数

标签 统计

jxls ×11

java ×8

apache-poi ×5

excel ×5

jxl ×4

jett ×1

maven ×1

performance ×1

xssf ×1