admin管理员组

文章数量:1530883

2023年12月12日发(作者:)

卓正PageOffice自动生成Excel表格[]

很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Excel模板文件里,这对于生成复杂格式的Excel报表文件非常有用,这个功能应用PageOffice的基本动态填充功能即可实现。但若是用户想动态生成一个没有固定模版格式的Excel报表时,换句话说,没有办法事先准备一个固定格式的模板时,就需要开发人员用后台代码实现Excel报表的动态生成功能了,即通过后台代码在Excel的工作表上画出相应表格,实现Excel文件的从零到有。这里的“零”指的是Excel空白文件。

下面我就如何通过后台代码实现在空白Excel文件中画表格,这一问题的具体步骤和大家分享一下。

就以通过后台自动生成一张“出差开支预算表”为例来向大家介绍一下吧。

第一步:请先安装PageOffice的服务器端的安装程序(请先确保已安装了微软公司发布的Excel组件程序),之后在你的网站中根目录下添加pageoffice文件夹(在网站的“下载中心”中可下载相应的压缩包,解压之后直接将PageOffice实例代码里的pageoffice文件夹拷贝到根目录下就可以了)。

第二步:在网站中添加文件夹存放excel模板文件,我习惯命名为“doc”,添加的模版文件是“”。

第三步:在网站中创建动态页面。在工具箱中拖动一个PageOfficeCtrl控件到页面上(PageOfficeCtrl控件位于工具箱最下方),并设置控件所在层( )的高和宽。

第四步:在中,利用PageOfficeCtrl控件画出相应的Excel表格,部分代码如下:

// 定义工作薄(Workbook)对象

ok wb = new ok();

// 定义table对象,“Sheet1”为打开的工作薄中的表单名称

backGroundTable = eet("Sheet1").OpenTable("A1:P200");

// 设置背景颜色

lor = ;

// 设置标题

//打开table对象

eet("Sheet1").OpenTable("A1:H2").Merge();

// 设置table中行高

eet("Sheet1").OpenTable("A1:H2").RowHeight = 30;

// 定义单元格对象 A1 = eet("Sheet1").OpenCell("A1");

// 设置单元格内容的对齐方式

// 设置水平对齐方式

ntalAlignment = gnCenter;

// 设置垂直对齐方式

alAlignment = gnCenter;

// 设置单元格前景色

lor = gb(0, 128, 128);

// 给单元格赋值

= "出差开支预算";

// 单元格字体加粗

= true;

// 设置单元格字体大小

= 25;

#region 画表头

// 定义Table的Border对象(此处相当于设置单元格的边框)

C4Border = eet("Sheet1").OpenTable("C4:C4").Border;

// 设置边框的宽度样式

= k;

// 设置边框线的颜色(注意:表格边框的颜色叠加问题:哪个颜色想显示在最上面,哪个表格的边框颜色 后设置)

lor = ;

titleTable = eet("Sheet1").OpenTable("B4:H5");

= k;

// 设置边框线的颜色(表格C4Border的上边框颜色将被表格titleTable的边框颜色覆盖)

lor = gb(0, 128, 128); // 设置表格边框样式

Type = dges;

#endregion

#region 画表体

bodyTable = eet("Sheet1").OpenTable("B6:H15");

// 设置table的边框

lor = ;

= line;

... ...

#endregion

#region 画表尾

// 画表尾 H16H17Border = eet("Sheet1").OpenTable("H16:H17").Border;

lor = gb(204, 255, 204);

E16G17Border = eet("Sheet1").OpenTable("E16:G17").Border;

lor = gb(0, 128, 128);

footTable = eet("Sheet1").OpenTable("B16:H17");

= k;

lor = gb(0, 128, 128);

Type = dges;

#endregion

#region 设置行高列宽 // 设置行高列宽

eet("Sheet1").OpenTable("A1:A1").ColumnWidth = 1;

eet("Sheet1").OpenTable("B1:B1").ColumnWidth = 20;

... ...

eet("Sheet1").OpenTable("A16:A16").RowHeight = 20;

eet("Sheet1").OpenTable("A17:A17").RowHeight = 20;

#endregion

// 批量设置表格中字体大小为10

for (int i = 0; i < 12; i++)

{

for (int j = 0; j < 7; j++)

{

eet("Sheet1").OpenCellRC(4 + i, 2 + j). = 10;

}

}

#region 填充单元格背景颜色

// 填充单元格背景色

for (int i = 0; i < 10; i++)

{

eet("Sheet1").OpenCell("H" + (6 + i).ToString()).BackColor = gb(255, 255, 153);

}

eet("Sheet1").OpenCell("E16").BackColor = gb(0, 128, 128);

eet("Sheet1").OpenCell("F16").BackColor = gb(0, 128, 128);

... ...

eet("Sheet1").OpenCell("H16").BackColor = gb(204, 255, 204);

eet("Sheet1").OpenCell("H17").BackColor = gb(204, 255, 204);

#endregion

#region 填充单元格文本和公式

//填充单元格文本

B4 = eet("Sheet1").OpenCell("B4");

= true;

= "出差开支预算";

H5 = eet("Sheet1").OpenCell("H5");

= true;

= "总计";

ntalAlignment = gnCenter;

... ...

eet("Sheet1").OpenCell("C6").Value = "机票单价(往)";

eet("Sheet1").OpenCell("C7").Value = "机票单价(返)";

... ...

//填充单元格公式 eet("Sheet1").OpenCell("H6").Formula = "=D6*F6";

eet("Sheet1").OpenCell("H7").Formula = "=D7*F7";

... ...

//填充单元格文本显示格式(¥.0.00)

for (int i = 0; i < 10; i++)

{

eet("Sheet1").OpenCell("D"+(6 + i).ToString()).NumberFormatLocal = "¥#,##0.00;¥-#,##0.00";

eet("Sheet1").OpenCell("H"+(6 + i).ToString()).NumberFormatLocal = "¥#,##0.00;¥-#,##0.00";

}

E16 = eet("Sheet1").OpenCell("E16");

= true;

= 11;

lor = ;

= "出差开支总费用"; alAlignment = gnCenter;

E17 = eet("Sheet1").OpenCell("E17");

= true;

= 11;

lor = ;

a = "=IF(C4>H16,"低于预算","超出预算")";

alAlignment = gnCenter;

H16 = eet("Sheet1").OpenCell("H16");

alAlignment = gnCenter;

FormatLocal = "¥#,##0.00;¥-#,##0.00";

= "Arial";

= 11;

= true; a = "=SUM(H6:H15)";

H17 = eet("Sheet1").OpenCell("H17");

alAlignment = gnCenter;

FormatLocal = "¥#,##0.00;¥-#,##0.00";

= "Arial";

= 11;

= true;

a = "=(C4-H16)";

#endregion

#region 填充数据

// 填充数据

C4 = eet("Sheet1").OpenCell("C4");

FormatLocal = "¥#,##0.00;¥-#,##0.00";

= "2500"; D6 = eet("Sheet1").OpenCell("D6");

FormatLocal = "¥#,##0.00;¥-#,##0.00";

= "1200";

eet("Sheet1").OpenCell("F6"). = 10;

eet("Sheet1").OpenCell("F6").Value = "1";

D7 = eet("Sheet1").OpenCell("D7");

FormatLocal = "¥#,##0.00;¥-#,##0.00";

= "875";

eet("Sheet1").OpenCell("F7").Value = "1";

#endregion

// 打开文件

string fileName = "";

Page = "pageoffice/";

ter(wb); n(h("doc/") + fileName, malEdit, "somebody");

如此,就完成Excel表格的填充了。

方案总结:

利用PageOffice组件实现后台画出Excel报表是很容易的。它既能在线对Excel表格内容进行排版,又能在后台修改内容(可实现内容的动态填充,具体编写过程可参考卓正网站的下载中心上的示例),实现Excel报表内容的从无到有。利用PageOffice组件可以很容易的就画出自己想要的复杂、美观的Excel表格,大大的节省了程序员的开发时间,提升了开发效率,而且实现的功能更加全面,解决了开发OA系统的程序员的一大技术难题。

另外,利用PageOffice组件还能在页面上添加自定义按钮,向Excel表格中插入电子印章、手写签名等信息,并能在线保存和打印等,方便用户的使用;同时也可从数据库获取数据,动态填充Excel表格,在次就不多赘述了,大家可以参考卓正网站(/)上的示例代码。

本文标签: 表格设置填充实现