给定义了名称的一块区域赋值
# 给定义了名称的一块区域赋值
- 查看本示例演示效果
- 本示例关键代码的编写位置,请参考“开始 - 快速上手”里您所使用的开发语言框架的最简集成代码
注意
本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。
虽然PageOffice针对Excel数据填充提供了Table对象,解决了填充数据时单元格区域行数不足的问题,但是假如遇到这样一个场景,有10个模板都只需要动态填充同样的一个表格(比如“产品销售表”),但是此表的数据在10个模板中位置不同,针对每一个模板都单独开发一套代码来填充数据代价就太大了。
要解决上面问题只需两步:
- 给每个模板中填充“产品销售表”的区域命名为:report(如下图中B4:F13的区域被命名为report)
- 调用WorkbookWriter.SheetWriter对象的openTableByDefinedName方法获取此区域的Table对象,编程赋值即可

# 后端代码
在后端编写代码调用webOpen方法打开文件,并创建Workbook对象填充数据。
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
WorkbookWriter workBook = new WorkbookWriter();
SheetWriter sheet = workBook.openSheet("Sheet1");
//把名称为“report”的区域打开为一个Table对象
ExcelTableWriter table = sheet.openTableByDefinedName("report", 10, 5, false);
table.getDataFields().get(0).setValue("轮胎");
table.getDataFields().get(1).setValue("100");
table.getDataFields().get(2).setValue("120");
table.getDataFields().get(3).setValue("500");
table.getDataFields().get(4).setValue("120%");
table.nextRow();
table.close();
poCtrl.setWriter(workBook); //必须。
//webOpen的第一个参数支持能够输出下载文件的Url相对地址或者文件在服务器上的磁盘路径两种方式
poCtrl.webOpen("D:\\documents\\test.xlsx", OpenModeType.xlsNormalEdit, "");
PageOfficeNetCore.PageOfficeCtrl poCtrl = new PageOfficeNetCore.PageOfficeCtrl(Request);
PageOfficeNetCore.Excel.WorkbookWriter wk = new PageOfficeNetCore.Excel.WorkbookWriter();
PageOfficeNetCore.Excel.SheetWriter sheet = wk.OpenSheet("Sheet1");
//把名称为“report”的区域打开为一个Table对象
PageOfficeNetCore.Excel.ExcelTableWriter table = sheet.OpenTableByDefinedName("report", 10, 5, false);
table.DataFields[0].Value = "轮胎";
table.DataFields[1].Value = "100";
table.DataFields[2].Value = "120";
table.DataFields[3].Value = "500";
table.DataFields[4].Value = "120%";
table.NextRow();
table.Close();
poCtrl.SetWriter(wk);// 注意不要忘记此代码,如果缺少此句代码,不会赋值成功。
//webOpen的第一个参数支持能够输出下载文件的Url相对地址或者文件在服务器上的磁盘路径两种方式
poCtrl.WebOpen("doc/test.xls", PageOfficeNetCore.OpenModeType.xlsNormalEdit, "tom");
// Make sure to add code blocks to your code group
# 前端代码
本示例无前端关键代码。
上次更新: 2025/07/21, 15:21:36