当前位置: 首页 > 知识库问答 >
问题:

如何使用Docx4J向现有表中添加行

李奕
2023-03-14

作为一个具体的示例,假设我有一个工作簿和工作表,其中有一个从A1开始的2列2行(包括标题)的现有表。我可以打开底层的XL>Tables>Table1.xml并看到以下内容:


    <table xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="xr xr3" xmlns:xr="http://schemas.microsoft.com/office/spreadsheetml/2014/revision" xmlns:xr3="http://schemas.microsoft.com/office/spreadsheetml/2016/revision3" id="5" xr:uid="{FAABA541-34FC-423B-94F5-DDD8D784132E}" name="SummarySFTP" displayName="SummarySFTP" ref="A1:B2" totalsRowShown="0" headerRowDxfId="46" headerRowBorderDxfId="45" tableBorderDxfId="44">
        <autoFilter ref="A1:B2" xr:uid="{93499C15-75FB-4436-A9B9-0C1FCBD787F4}">
            <filterColumn colId="0" hiddenButton="0"/>
            <filterColumn colId="1" hiddenButton="0"/>
        </autoFilter>
        <tableColumns count="2">
            <tableColumn id="1" xr3:uid="{D4DA50CD-C581-4286-9B64-42B02B6646B6}" name="Status"/>
            <tableColumn id="2" xr3:uid="{9D4F40B3-B530-42E1-92E9-86D5632CA191}" name="Quantity" dataDxfId="43"/>
        </tableColumns>
        <tableStyleInfo showFirstColumn="0" showLastColumn="0" showRowStripes="1" showColumnStripes="0"/>
    </table>

我可以看到我的两列、根标记的ref属性以及autoFilter块的ref属性。我想要做的是添加一个新行,这样表的面积将是A1:B3。

共有1个答案

李俊雅
2023-03-14

在docx4j webapp中检查一个包含表的xlsx文件,它看起来相当简单。

它为表部件的内容生成代码,如下所示:

CTTable table = smlObjectFactory.createCTTable(); 
JAXBElement<org.xlsx4j.sml.CTTable> tableWrapped = smlObjectFactory.createTable(table); 
    // Create object for autoFilter
    CTAutoFilter autofilter = smlObjectFactory.createCTAutoFilter(); 
    table.setAutoFilter(autofilter); 
        autofilter.setRef( "A2:B4"); 
    // Create object for tableColumns
    CTTableColumns tablecolumns = smlObjectFactory.createCTTableColumns(); 
    table.setTableColumns(tablecolumns); 
        tablecolumns.setCount( new Long(2) );
        // Create object for tableColumn
        CTTableColumn tablecolumn = smlObjectFactory.createCTTableColumn(); 
        tablecolumns.getTableColumn().add( tablecolumn); 
            tablecolumn.setTotalsRowFunction(org.xlsx4j.sml.STTotalsRowFunction.NONE);
            tablecolumn.setName( "Column1"); 
            tablecolumn.setId( 1 );
        // Create object for tableColumn
        CTTableColumn tablecolumn2 = smlObjectFactory.createCTTableColumn(); 
        tablecolumns.getTableColumn().add( tablecolumn2); 
            tablecolumn2.setTotalsRowFunction(org.xlsx4j.sml.STTotalsRowFunction.NONE);
            tablecolumn2.setName( "Column2"); 
            tablecolumn2.setId( 2 );
    // Create object for tableStyleInfo
    CTTableStyleInfo tablestyleinfo = smlObjectFactory.createCTTableStyleInfo(); 
    table.setTableStyleInfo(tablestyleinfo); 
        tablestyleinfo.setName( "TableStyleMedium2"); 
    table.setTableType(org.xlsx4j.sml.STTableType.WORKSHEET);
    table.setHeaderRowCount( new Long(1) );
    table.setTotalsRowCount( new Long(0) );
    table.setName( "Table1"); 
    table.setId( 1 );
    table.setRef( "A2:B4"); 
    table.setDisplayName( "Table1"); 

一旦知道了行数量,就可以看到需要在两个地方写入它,使用setRef和autofilter.setRef

 类似资料:
  • 问题内容: 我已经使用python创建了一个txt文件,其中包含几行文本,这些文本将由一个简单的程序读取。但是,我在重新打开文件以及在程序的后续部分中在文件中写入其他行时遇到了一些麻烦。(这些行将从稍后获得的用户输入中写入。) 这是假设“ file.txt”已被打开并被写入。但是,使用我当前拥有的代码第二次打开该文件时,我必须擦除之前编写的所有内容并重写新行。有没有办法防止这种情况发生(并可能减少

  • 我正在表任务中添加新列名标题。但我得到一个错误,该表中不存在此列。谁能帮我解决那个错误。这是我的密码: 然后添加此代码 到创建的新表文件

  • 我有一个工作的Java项目,它使用Access.accdb数据库存储数据。我正在为我的程序进行更新,为用户提供更多的功能。为了使其工作,我需要在现有的表中添加一个列,该列填充了数据。当我研究时,我发现UCanAccess不能支持 这是不幸的,但我明白,由于低级别的驱动程序不支持它,UCanAccess也不能支持它。 然后我找到了这个解决办法: 如何使用UCanAccess修改表 但这对我也不起作用

  • 我需要从Spring应用程序向MongoDB实例抛出文档,在那里我可以利用其数据包中的MongoTemplate。 但是Spring将那些instances字段作为MongoDB文档id,导致数据库中的id重复,从而防止了重复的实例。 null 通过阅读这个问题,我发现字段对于Spring是必需的,我需要添加一个字段。 这就是我将文档插入集合的方式: 我对ByteBuddy完全陌生(我认为这可能是

  • 我最初调用了数据库,并使用了Definer中的表,在它上运行一些查询,这些查询存储在dataframe'data1'中。现在我想发送包含一个新列的'data1',并更新MySQL中的非空表exdata3。 (将来我可能没有新的列/行,但与MySQL中的相同列相比,现有列在dataframe中可能有不同的值,如果您知道我的意思的话) 在MySQL中,dataframe和表之间的区别是在datafra

  • 我必须更新历史数据。说到更新,我的意思是向S3上的现有分区添加新行,有时是新列。 当前分区按日期实现:。为了避免每个分区有太多对象,我执行以下操作来维护单个对象/分区: 存在这样一种情况,我必须添加具有以下列值的某些行: 这意味着此路径中的文件(S3对象):