2023年11月28日发(作者:)

Java实现给Excel模板赋值(直接打开表格赋值或者⽤⾃定义

了名称的单元格(⼀块区域)赋。。。

1:需求

直接打开表格填充数据到模板后的效果可能出现表格重叠的问题

⽤⾃定义名称填充数据到模板后表格互不影响

Excel⾃⾝有⼀个“定义名称”的功能,

最终所有的⾃定义名称

<%@page import=".*"%>

<%

//设置PageOfficeCtrl控件的服务页⾯

PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);

verPage(textPath()+"/"); //此⾏必须

tion("简单的给Excel赋值");

//定义Workbook对象

Workbook workBook = new Workbook();

//定义Sheet对象,"Sheet1"是打开的Excel表单的名称

Sheet sheet = eet("Sheet1");

llByDefinedName("testA1").setValue("testA1");

llByDefinedName("testB1").setValue("testB1");

//定义Table对象,参数“report1”Excel中定义的名称,“4”为名称指定区域的⾏数,

//“5”为名称指定区域的列数,“true”表⽰表格会按实际数据⾏数⾃动扩展

Table table = bleByDefinedName("report", 4, 5, true);

int rowCount = 12;//假设将要⾃动填充数据的实际记录条数为12

for(int i = 1; i <= rowCount; i++){

//给区域中的单元格赋值

aFields().get(0).setValue( i + "");

aFields().get(1).setValue("100");

aFields().get(2).setValue("120");

aFields().get(3).setValue("500");

aFields().get(4).setValue("120%");

w();//循环下⼀⾏,此⾏必须

}

//关闭table对象

();

//定义Table对象

Table table2 = bleByDefinedName("report2", 4, 5, true);

int rowCount2 = 4;//假设将要⾃动填充数据的实际记录条数为12

for(int i = 1; i <= rowCount2; i++){

//给区域中的单元格赋值

aFields().get(0).setValue( i + "季度");

aFields().get(1).setValue("300");

aFields().get(2).setValue("300");

aFields().get(3).setValue("300");

aFields().get(4).setValue("100%");

w();

}

//关闭table对象

<%=lCode("PageOfficeCtrl1")%>

(3)直接打开表格的jsp代码

<%@ page language="java"

import=".*,fice.*"

pageEncoding="utf-8"%>

<%@page import="riter.*"%>

<%@page import=""%>

<%@page import=".*"%>

<%

//设置PageOfficeCtrl控件的服务页⾯

PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);

verPage(textPath()+"/"); //此⾏必须

tion("简单的给Excel赋值");

//定义Workbook对象

Workbook workBook = new Workbook();

//定义Sheet对象,"Sheet1"是打开的Excel表单的名称

Sheet sheet = eet("Sheet1");

//定义Table对象

Table table = ble("B4:F11");

int rowCount = 12;//假设将要⾃动填充数据的实际记录条数为12

for(int i = 1; i <= rowCount; i++){

//给区域中的单元格赋值

aFields().get(0).setValue( i + "");

n("doc/", malEdit, "张三");

%>

两次演⽰效果⽐较. 直接打开表格的效果发现少了 10, 11, 12 , 三个⽉份的数据.但是⽤⾃定义名称会⾃动分开. 不会出现重叠的现象