1:需求
直接打开表格填充数据到模板后的效果可能出现表格重叠的问题
用自定义名称填充数据到模板后表格互不影响
Excel自身有一个“定义名称”的功能,
(1)可以给任意的单元格定义一个名称,比如定义某个单元格的名称为:testA1,如何给这个名称为“testA1”的单元格赋值。
(2)可以给选中的一块区域(在PageOffice的概念里称这块区域为一个Table)定义一个名称,比如定义区域“B4:F13”的名称为:report,如何给这个名称为“report”的Table赋值。
2:excel模板设置
(1)自定义单元格
(2)自定义一块区域(表格)
最终所有的自定义名称
2. 页面代码
(1)web.xml
<!-- PageOffice Begin -->
<servlet>
<servlet-name>poserver</servlet-name>
<servlet-class>com.zhuozhengsoft.pageoffice.poserver.Server</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/poserver.zz</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/sealsetup.exe</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/posetup.exe</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/pageoffice.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/jquery.min.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/pobstyle.css</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>adminseal</servlet-name>
<servlet-class>com.zhuozhengsoft.pageoffice.poserver.AdminSeal</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>adminseal</servlet-name>
<url-pattern>/adminseal.zz</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>adminseal</servlet-name>
<url-pattern>/loginseal.zz</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>adminseal</servlet-name>
<url-pattern>/sealimage.zz</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>mht</extension>
<mime-type>message/rfc822</mime-type>
</mime-mapping>
<context-param>
<param-name>adminseal-password</param-name>
<param-value>111111</param-value>
</context-param>
<!-- PageOffice End -->
(2):自定义名称的ExcelFill.jsp页面
<%@ page language="java"
import="java.util.*,com.zhuozhengsoft.pageoffice.*"
pageEncoding="utf-8"%>
<%@page import="com.zhuozhengsoft.pageoffice.excelwriter.*"%>
<%@page import="java.awt.Color"%>
<%@page import="java.text.*"%>
<%
//设置PageOfficeCtrl控件的服务页面
PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须
poCtrl1.setCaption("简单的给Excel赋值");
//定义Workbook对象
Workbook workBook = new Workbook();
//定义Sheet对象,"Sheet1"是打开的Excel表单的名称
Sheet sheet = workBook.openSheet("Sheet1");
sheet.openCellByDefinedName("testA1").setValue("testA1");
sheet.openCellByDefinedName("testB1").setValue("testB1");
//定义Table对象,参数“report1”为Excel中定义的名称,“4”为名称指定区域的行数,
//“5”为名称指定区域的列数,“true”表示表格会按实际数据行数自动扩展
Table table = sheet.openTableByDefinedName("report", 4, 5, true);
int rowCount = 12;//假设将要自动填充数据的实际记录条数为12
for(int i = 1; i <= rowCount; i++){
//给区域中的单元格赋值
table.getDataFields().get(0).setValue( i + "月");
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对象
table.close();
//定义Table对象
Table table2 = sheet.openTableByDefinedName("report2", 4, 5, true);
int rowCount2 = 4;//假设将要自动填充数据的实际记录条数为12
for(int i = 1; i <= rowCount2; i++){
//给区域中的单元格赋值
table2.getDataFields().get(0).setValue( i + "季度");
table2.getDataFields().get(1).setValue("300");
table2.getDataFields().get(2).setValue("300");
table2.getDataFields().get(3).setValue("300");
table2.getDataFields().get(4).setValue("100%");
table2.nextRow();
}
//关闭table对象
table2.close();
poCtrl1.setWriter(workBook);
//隐藏菜单栏
poCtrl1.setMenubar(false);
poCtrl1.setSaveDataPage("SaveData.jsp");
poCtrl1.addCustomToolButton("保存", "Save()", 1);
//打开Word文件
poCtrl1.webOpen("doc/test.xlsx", OpenModeType.xlsNormalEdit, "张三");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<div style="width: 1000px; height: 800px;">
<%=poCtrl1.getHtmlCode("PageOfficeCtrl1")%>
</div>
</body>
</html>
(3)直接打开表格的jsp代码 ExcelFill1.jsp
<%@ page language="java"
import="java.util.*,com.zhuozhengsoft.pageoffice.*"
pageEncoding="utf-8"%>
<%@page import="com.zhuozhengsoft.pageoffice.excelwriter.*"%>
<%@page import="java.awt.Color"%>
<%@page import="java.text.*"%>
<%
//设置PageOfficeCtrl控件的服务页面
PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须
poCtrl1.setCaption("简单的给Excel赋值");
//定义Workbook对象
Workbook workBook = new Workbook();
//定义Sheet对象,"Sheet1"是打开的Excel表单的名称
Sheet sheet = workBook.openSheet("Sheet1");
//定义Table对象
Table table = sheet.openTable("B4:F11");
int rowCount = 12;//假设将要自动填充数据的实际记录条数为12
for(int i = 1; i <= rowCount; i++){
//给区域中的单元格赋值
table.getDataFields().get(0).setValue( i + "月");
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对象
table.close();
//定义Table对象
Table table2 = sheet.openTable("B13:F16");
int rowCount2 = 4;//假设将要自动填充数据的实际记录条数为4
for(int i = 1; i <= rowCount2; i++){
//给区域中的单元格赋值
table2.getDataFields().get(0).setValue( i + "季度");
table2.getDataFields().get(1).setValue("300");
table2.getDataFields().get(2).setValue("300");
table2.getDataFields().get(3).setValue("300");
table2.getDataFields().get(4).setValue("100%");
table2.nextRow();
}
//关闭table对象
table2.close();
poCtrl1.setWriter(workBook);
//隐藏菜单栏
poCtrl1.setMenubar(false);
//打开Word文件
poCtrl1.webOpen("doc/test.xlsx", OpenModeType.xlsNormalEdit, "张三");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
openTable填充数据后显示的效果
<div style="width: 1000px; height: 900px;">
<%=poCtrl1.getHtmlCode("PageOfficeCtrl1")%>
</div>
</body>
</html>
4:演示效果
(1)用自定义名称的演示效果
(2)直接打开表格的演示效果
两次演示效果比较. 直接打开表格的效果发现少了 10, 11, 12 , 三个月份的数据.但是用自定义名称会自动分开. 不会出现重叠的现象
5: 本示例建议使用ie 浏览器. 如果要用谷歌火狐等浏览器. 请访问 http://www.zhuozhengsoft.com/dowm/ 下载完整的试用程序包. 具体参考里面的Samples示例
相关推荐
C#读取Excel单元格内容并赋值给text一个简单demo C#读取Excel单元格内容并赋值给text一个简单demo C#读取Excel单元格内容并赋值给text一个简单demo
Java编程调用PageOffice实现从空白的excel文件动态生成excel表格,设置公式并填充数据。 集成PageOffice不但能够实现在线编辑、保存真正的Office文档,而且还可以轻松实现Word、Excel文档的动态数据填充、格式控制和...
要实现自定义赋值,我们通常需要在表格的列定义中使用`templet`属性。这个属性可以是一个HTML模板的ID,也可以是一个回调函数,用于根据数据动态生成列的HTML内容。 在使用HTML模板的方式中,我们可以在文档中定义...
本篇文章将深入探讨如何使用Java和Apache POI来实现Excel模板的功能,覆盖了单个传值、单行循环、块循环以及快循环嵌套单行循环等操作。 首先,我们需要导入Apache POI的相关依赖库,如`poi-ooxml`和`poi-ooxml-...
在iOS开发中,自定义单元格(Custom Cell)是一个常见的需求,它允许开发者根据特定的UI设计和功能需求,创建个性化的表格视图(UITableView)或集合视图(UICollectionView)中的每一行或每个单元格。本教程将通过...
标题中的“POI处理Excel,获取特定单元格后,为其右侧相邻单元格赋值(Excel签署)”是指使用Apache POI库在Java中操作Excel文件的过程。Apache POI是一个流行的开源项目,允许开发者读写Microsoft Office格式的文件...
在Excel中,条件赋值是一种高效的数据处理方法,它允许用户根据特定的规则或标准来自动更改单元格的值。这种功能在数据分析、财务计算、报告制作等场景中非常常见。下面将详细介绍如何进行条件赋值操作以及相关工具...
在Java编程中,处理Excel文件是一项常见的任务,特别是在数据导入导出、数据分析或者报表生成的场景下。本文将深入探讨如何使用Java来处理Excel,并特别关注如何将List对象导出为Excel文件。 首先,我们需要一个库...
在本文中,我们将深入探讨如何使用C#编程语言来创建Excel文件,并且为其中的某一列设置下拉框,同时实现下拉框的动态赋值。这个过程涉及到Microsoft Office Interop库的应用,以及对Excel对象模型的理解。让我们一...
可以使用 `worksheet.Cells[1, 1] = "Excel 单元格赋值";` 方法来赋值单元格,例如将 A1 单元格的值设置为 "Excel 单元格赋值"。 五、设置字体 可以使用 `range.Font` 属性来设置字体,例如设置字体的大小、是否带...
本主题聚焦于“java代码生成excel表并下载”,这是一个关键的后端功能,允许用户自定义表格内容并选择下载路径。下面我们将深入探讨如何实现这一功能。 首先,Java中用于生成Excel文件的主要库是Apache POI项目。...
本篇文章将深入探讨如何使用jQuery来动态地给HTML表格(table)赋值,通过一个具体的实例来展示相关技巧。 首先,我们需要一个基本的HTML结构,包含一个具有特定类和ID的table元素。在这个例子中,我们有一个layui...
在IT行业中,处理数据是日常任务之一,而Excel作为广泛使用的电子表格软件,其数据处理需求尤为常见。本文将深入探讨如何使用Java的Apache POI库来读取Excel文件,并处理其中合并单元格的数据,同时将这些数据存储到...
使用`SpreadsheetDocument`类,你可以打开一个现有的Excel文件。这通常涉及以下步骤: ```csharp using System.IO.Packaging; using DocumentFormat.OpenXml.Packaging; string filePath = "path_to_your_...
本示例主要涉及如何使用Java读取Excel表格的内容,包括文本数据和图片,并实现图片的自动上传以及上传成功后的回调功能,将返回的图片URL重新赋值到Excel中的对应位置。 首先,我们需要引入能够处理Excel的Java库,...
行编辑模式下,单元格变为可编辑,用户可以直接在表格内修改数据;而弹出式编辑则会在一个新的窗口或模态对话框中显示完整的表单,用于编辑选定行的所有数据。 要实现动态为其他列赋值,我们可以通过监听文本域和...
以上两种方案均能实现在Excel表格的任意单元格处插入页数的功能,其中方案一通过定义“纵向页”、“横向页”、“总页”和“页眉”四个名称实现了更细致的控制。无论选择哪种方案,都需要通过定义名称的方式,利用...
在这个特定的问题中,我们要探讨的是如何在FastReport报表中动态地为变量赋值,这是一个常见的需求,尤其是在处理动态数据或者需要根据用户输入调整报告内容时。 首先,让我们理解FastReport的工作原理。FastReport...
在Java开发中,导出Excel是一项常见的需求,尤其在数据报表和数据分析场景中。本示例涉及的主题是“java导出excel复杂表头”,这意味着我们要处理的不是简单的单级表头,而是包含多级或者多层次结构的表头。在描述中...
在FineReport报表开发中,参数控件的动态赋值是一个常见需求,主要用于实现控件间的依赖关系,使得一个控件的值能够影响到其他控件的值。具体应用场景通常出现在报表的参数配置界面,其中当一个参数值发生变化时,...