`
妮子321
  • 浏览: 83960 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PageOffice,word常用接口对象--Table类

阅读更多

在做项目的过程中,经常会遇到要把报表导出到Word文件中再打印的情况,而既然是做报表那就免不了要用到表格,即需要在Word文件中插入table。因此,PageOffice开发平台中就添加了此功能。

Table类的命名空间


Table类进行写入操作时

  • Java开发时命名空间为:com.zhuozhengsoft.pageoffice.wordwriter
  • ASP.NET开发时命名空间为:PageOffice.WordWriter

Table类进行读取操作时

  • Java开发时命名空间为:com.zhuozhengsoft.pageoffice.wordreader
  • ASP.NET开发时命名空间为:PageOffice.WordReader

Table类的使用


Word中的table是要借助数据区域(DataRegion)实现的,要求数据区域完整的包含了整个Table的内容,这样才可以通过数据区域控制和操作table。因此,要想使用table需在word文件中插入书签(数据区域及书签的添加使用与实现方法前面已经详细介绍过了此处不再赘述)。而table的插入,既可以在Word模版中书签处手动插入:工具栏“插入”→“表格”,亦可以在程序中通过数据区域添加。
同时,Table既可以对齐进行设置和赋值又可以从Table中取值

  • 对Table进行设置和赋值(写入操作)的方法如下:

方法一:先在Word模版文件中手动插入书签,如命名为“PO_regTable”,然后在此处手动插入table。
Java部分代码如下:

    WordDocument doc = new WordDocument();
	DataRegion dataRegion = doc.openDataRegion("PO_regTable");
	//打开table,openTable(index)方法中的index代表Word文档中要打开的table位置的索引,从1开始
	Table table = dataRegion.openTable(1);

	//给table中的单元格赋值, openCellRC(int,int)中的参数分别代表第几行、第几列,下标从1开始
	table.openCellRC(3, 1).setValue("A公司");
	table.openCellRC(3, 2).setValue("开发部");
	table.openCellRC(3, 3).setValue("李四");
	
	//在某个个单元格下面插入一个空行
	table.insertRowAfter(table.openCellRC(3, 3));
	
	table.openCellRC(4, 1).setValue("B公司");
	table.openCellRC(4, 2).setValue("销售部");
	table.openCellRC(4, 3).setValue("张三");
	
	poCtrl1.setWriter(doc);//不要忘记此句
    ... ...

ASP.NET部分实现代码如下

    PageOffice.WordWriter.WordDocument doc = new PageOffice.WordWriter.WordDocument();
    PageOffice.WordWriter.DataRegion dataRegion = doc.OpenDataRegion("PO_regTable");
    PageOffice.WordWriter.Table table = dataRegion.OpenTable(1);
        
    table.OpenCellRC(3, 1).Value = "A公司";
    table.OpenCellRC(3, 2).Value = "开发部";
    table.OpenCellRC(3, 3).Value = "李清";
        
    table.InsertRowAfter(table.OpenCellRC(3, 3)); //插入一行 

    table.OpenCellRC(4, 1).Value = "B公司";
    table.OpenCellRC(4, 2).Value = "销售部";
    table.OpenCellRC(4, 3).Value = "张三";
    PageOfficeCtrl1.SetWriter(doc);//不要忘记此行
	... ...

上述示例的详细代码可参见PageOffice示例包中高级功能中的第14个示例:“向Word文档中的Table插入新行并赋值(专业版、企业版)”。

方法二:先在Word模版文件中手动插入书签,如命名为“PO_regTable”,然后程序插入table。部分实现代码如下:
Java代码(命名空间同方法一中相同):

    WordDocument doc = new WordDocument();
	DataRegion dataRegion = doc.openDataRegion("PO_regTable");
    
	//插入table,createTable方法中的三个参数分别代表插入表格的列数、行数、自动调整表格大小的方式。
    Table table=dataRegion.createTable(3,3,WdAutoFitBehavior.wdAutoFitFixed);
 	table.openCellRC(3, 1).setValue("A公司");
	table.openCellRC(3, 2).setValue("开发部");
	table.openCellRC(3, 3).setValue("李清");
	... ...
	poCtrl1.setWriter(doc);//不要忘记此句
	... ...

ASP.NET实现代码如下(命名空间同方法一中相同):

	PageOffice.WordWriter.WordDocument doc = new PageOffice.WordWriter.WordDocument();
    PageOffice.WordWriter.DataRegion dataRegion = doc.OpenDataRegion("PO_regTable");
    
    //插入一个4行3列的表格
    PageOffice.WordWriter.Table table = dataRegion.CreateTable(3, 4, 
                                         PageOffice.WordWriter.WdAutoFitBehavior.wdAutoFitFixed); 
    table.OpenCellRC(3, 1).Value = "A公司";
    table.OpenCellRC(3, 2).Value = "开发部";
    table.OpenCellRC(3, 3).Value = "李清";
    ... ...
    PageOfficeCtrl1.SetWriter(doc);//不要忘记此行
    ... ...

以上是实现对Table的设置和赋值。

在PageOffice中不仅能对Table进行设置和赋值,还能从Table中取值。一般来说不推荐使用从Word表格中获取数据,因为实现此功能时,PageOffice并不能保护Table的表格结构,如果用户操作时破坏了表格的结构,那么获取表格数据的程序肯定会出现异常。

  • 从Table中取值(读取操作)方法如下:

Java代码:

	WordDocument doc = new WordDocument(request,response); //注意Java中这句和设置Table时的不同
	DataRegion dataRegion = doc.openDataRegion("PO_regTable"); 
	Table table = dataRegion.openTable(1); //获取Table,参数为table的索引
	Cell cell = table.openCellRC(2,3); //获取某个Cell对象,参数分别指table中的行和列索引
	List<Cell> cells = table.getCells(); //获取Cell对象集合
	Cell cell2 = (Cell)table.getCells().get(1); //获取Cell对象集合中的某个Cell对象
	int columnCount = table.getColumnsCount(); //获取表格的列数
	int rowCount = table.getRowsCount(); //获取表格的行数
	int index = table.getIndex(); //Word中当前Table的索引
    ... ...

ASP.NET代码:

	WordDocument doc = new WordDocument();
    PageOffice.WordReader.DataRegion dataRegion = doc.OpenDataRegion("PO_regTable");
    PageOffice.WordReader.Table table = dataRegion.OpenTable(1); //获取Table,参数为table的索引
    Cell cell = table.OpenCellRC(3,2); //获取某个Cell对象,参数分别指table中的行和列索引
    ArrayList cells = table.Cells; //获取Cell对象集合
    Cell cell2 = (Cell)table.Cells[2]; //获取Cell对象集合中的某个Cell对象
    ... ...
  • Table的样式

在PageOffice开发平台下不仅能向Word中插入table,还能对插入的table进行样式的设置(写入操作)。

①、设置table的宽度,以磅为单位或以窗口宽度的百分比表示,取决于属性PreferredWidthType( wdPreferredWidthAuto: 基于当前所选内容自动选择要使用的度量单位、wdPreferredWidthPercent:使用指定的百分比测量当前项目的宽度、wdPreferredWidthPoints:使用指定的磅数测量当前项目的宽度)的值。

Java代码:

	table.setPreferredWidth(0.8f);//参数类型:float
	table.setPreferredWidthType(WdPreferredWidthType.wdPreferredWidthPercent);

ASP.NET代码:

	table.PreferredWidth = 200f;//参数类型:float
    table.PreferredWidthType= PageOffice.WordWriter.WdPreferredWidthType.wdPreferredWidthPoints;

②、设置行高、列宽

Java代码:

	table.setRowsHeight(20f);// 设置所有行的行高
    //设置某一行的行高,注意第二个参数对table的行高显示结果的影响,详细请参考服务器端的开发帮助手册。
	table.openRow(2).setHeight(10f,WdRowHeightRule.wdRowHeightExactly);
    //设置某一列的列宽,注意第二个参数对table的列宽显示结果的影响,详细请参考服务器端的开发帮助手册。
	table.openColumn(1).setWidth(25f, WdRulerStyle.wdAdjustNone);

ASP.NET代码:

	table.SetRowsHeight(60f, PageOffice.WordWriter.WdRowHeightRule.wdRowHeightExactly);
    //设置某一行的行高,注意第二个参数对table的行高显示结果的影响,详细请参考服务器端的开发帮助手册。
	table.OpenRow(2).SetHeight(100f,PageOffice.WordWriter.WdRowHeightRule.wdRowHeightExactly);
    //设置某一列的列宽,注意第二个参数对table的列宽显示结果的影响,详细请参考服务器端的开发帮助手册。
    table.OpenColumn(2).SetWidth(180f, PageOffice.WordWriter.WdRulerStyle.wdAdjustProportional);

③、设置边框的样式

Java代码:

	table.getBorder().setBorderType(WdBorderType.wdAllEdges); //边框类型
	table.getBorder().setLineColor(Color.RED); //边框颜色
	table.getBorder().setLineStyle(WdLineStyle.wdLineStyleDashDot); //边框线样式
	table.getBorder().setLineWidth(WdLineWidth.wdLineWidth225pt); //边框线宽度

ASP.NET代码:

    table.Border.BorderType = PageOffice.WordWriter.WdBorderType.wdAllEdges; //边框类型
    table.Border.LineColor = Color.Green; //边框颜色
    table.Border.LineStyle = PageOffice.WordWriter.WdLineStyle.wdLineStyleDashDotStroked;//边线样式
    table.Border.LineWidth = PageOffice.WordWriter.WdLineWidth.wdLineWidth225pt; //边框线宽度
  • Table、Column、Row、Cell之间的关联
    Column、Row、Cell是PageOffice开发平台中的类,这三者是Table的重要组成部分。Column、Row、Cell这三个类对象的定义都是通过Table类实现的,通过对这三个类对象的设置可以使Table的内容更加的丰富和完善。
分享到:
评论

相关推荐

    Sap常用的T-CODE及TABLE

    Sap常用的T-CODE及TABLE,很好的东西。

    life-expectancy-table.json

    life-expectancy-table.json

    用于设置ant-design-vue中table组件的列宽可拖拽

    vuex2.x中用于设置ant-design-vue中table组件的列宽可拖拽

    Vue3+element-plus-table-dragable(Sortable.js)实现表格拖动排序

    下边网友发现有新的方案:https://github.com/guolaopi/element-plus-table-dragable-demo 有上网条件的可以直接去github下载。 没有上网条件的可以在这里下载已经更新。 说明:本人前端小白不是什么骗子(我有4.5k...

    vue-data-tablee-基于vue-good-table,一个简单而漂亮的表组件-Vue.js开发

    Vue数据表Yeap,另一个Vue表...从'vue'导入'vue-data-tablee / dist / vue-data-tablee.css'从'vue'导入Vue从'vue-data-tablee'导入DataTablee Vue.use(DataTablee)您也可以仅导入所需的组件,而无需导入全局安装。

    angu-fixed-header-table, AngularJS固定标题可以滚动表指令.zip

    angu-fixed-header-table, AngularJS固定标题可以滚动表指令 angu-fixed-header-table一个AngularJS固定标题可以滚动 table 指令演示要查看演示和进一步详细信息,请访问 ...

    jquery-2.table2excel

    jquery-2.table2excels. 1、需要引入jquery.js和jquery.table2excel.min.js 2、增加绑定事件,例子: ------------------- //导出excel $("#output").click(function(){ var myDate = new Date(); $("#example")....

    flink-table-planner-blink-2.11-1.12.7-API文档-中文版.zip

    赠送jar包:flink-table-planner-blink_2.11-1.12.7.jar; 赠送原API文档:flink-table-planner-blink_2.11-1.12.7-javadoc.jar; 赠送源代码:flink-table-planner-blink_2.11-1.12.7-sources.jar; 赠送Maven依赖...

    vue-good-table-一个易于使用的VueJS(2.x)表插件,具有排序,列过滤,分页等功能。-Vue.js开发

    Vue-good-table易于使用,清洁且功能强大的VueJS数据表,具有诸如排序,列过滤,分页和其他更多基本功能Vue-good-table用于VueJS的易于使用,清洁且功能强大的数据表具有基本功能例如排序,列过滤,分页等等-xaksis....

    Laravel开发-mks-smart-table

    Eloquent ORM 提供了一个简洁的接口,使我们能够以面向对象的方式处理数据库查询。 在 Laravel 中集成 mks-smart-table,首先需要确保你已经安装了 Laravel,并创建了一个新的项目。接下来,你需要安装 mks-smart-...

    bootstrap-table-export.js和tableExport.js

    而“bootstrap-table-export.js”和“tableExport.js”是针对Bootstrap表格的导出插件,它们扩展了表格的功能,允许用户将表格数据导出为各种格式,如CSV、Excel、PDF等,便于数据分析和存储。 首先,我们来详细...

    react-BaseTable是一个react表格组件能够以高性能和灵活性的显示大型数据集

    BaseTable支持多种数据源,可以是数组、Promise或者任何符合特定接口的对象。它提供了丰富的数据处理方法,如排序、过滤、分页等,帮助开发者更好地管理和展示数据。 ### 3. 自定义列和行 BaseTable组件允许开发者...

    flink-table-planner-blink_2.11-1.13.2-API文档-中文版.zip

    赠送jar包:flink-table-planner-blink_2.11-1.13.2.jar; 赠送原API文档:flink-table-planner-blink_2.11-1.13.2-javadoc.jar; 赠送源代码:flink-table-planner-blink_2.11-1.13.2-sources.jar; 赠送Maven依赖...

    bootstrap-table-tree.js

    bootstrap-table-tree.js对bootstrap-table中某些方法进行重写。

    uni-app table表格

    在uni-app框架中,`table`组件是一种用于展示数据的常用元素,尤其在处理列表或者表格数据时。uni-app是一个跨平台的前端开发框架,它允许开发者使用Vue.js语法编写代码,一次编写,多端运行,包括iOS、Android、H5...

    SAP-ABAP-OO-实现-CL-SALV-TABLE

    lr_table-&gt;display(). ``` #### 3. ALV 控制类 LCL_ALV 的定义与实现 为了更好地组织代码,可以定义一个自己的 ALV 控制类 `LCL_ALV`。这个类包含了获取数据、处理 ALV 显示等逻辑。下面是对该类的定义与实现的...

    vue-dynamic-table.rar

    每个字段通常包括名称、类型等信息,这些信息可以用来创建`&lt;el-table-column&gt;`元素。 - 表头的属性(如`prop`、`label`、`width`等)应根据字段信息动态设置,以确保表格的正确展示。 2. **数据绑定**: - 数据...

    matlab开发-table2word

    总的来说,"table2word"是MATLAB与Word集成的一个实例,它展示了如何利用MATLAB的强大计算能力和Office的应用程序接口来提高工作效率,尤其是在数据报告和文档制作方面。了解和掌握这样的工具,对于MATLAB用户来说是...

    layui-soul-table-java:layui-soul-table 后台java版

    layui-soul-table 后台java版 当前soul-table版本 v1.0, layui版本:v2.5.4 mybatis版: master分支 mybatis-plus版: mybatis-plus分支 hibernate版: hibernate分支 所有筛选demo: 仅后台java版demo: 当然你也可以...

    vue-virtualized-table:基于Vue.js的虚拟表组件

    Vue虚拟表vue-virtual-table组件实现的第二个版本受和启发,API设计具有60%+的一致性。 或者,您可能认为我将它们从React转换为Vue并添加了虚拟化滚动功能。特征支持自定义渲染支持虚拟滚动支持扩展/折叠支持自定义...

Global site tag (gtag.js) - Google Analytics