普通的MS Office Excel只能在本地磁盘上打开和编辑保存,这使得程序员在开发项目时受到很多的约束,许多的功能无法实现或者无法达到理想的效果。但是通过调用PageOffice开发平台,不仅可以在线打开并保存Excel文件还可以提交Excel中的数据。
下面我就简单的和大家分享一下如何实现Excel文档的在线打开、编辑、保存和数据的提交。
第一步:请先安装PageOffice的服务器端的安装程序,之后在你的网站中根目录下添加pageoffice文件夹(在PageOffice官方网站的“下载中心”中可下载相应的压缩包,解压之后直接将PageOffice实例代码里的pageoffice文件夹拷贝到根目录下就可以了)。
第二步:在网站中创建动态页面Excel.aspx。在工具箱中拖动一个PageOfficeCtrl控件到页面上(PageOfficeCtrl控件位于工具箱最下方),并设置控件所在层(<div></div>)的高和宽。
第三步:Excel.aspx页面编写代码,打开Excel文档。部分代码如下:
//设置PageOfficeCtrl控件的服务页面
PageOfficeCtrl1.ServerPage = "../pageoffice/server.aspx";
PageOfficeCtrl1.AddCustomToolButton("保存", "Save()", 1);
//定义Workbook对象
PageOffice.ExcelWriter.Workbook workBook = new PageOffice.ExcelWriter.Workbook();
//定义Sheet对象,"Sheet1"是打开的Excel表单的名称
PageOffice.ExcelWriter.Sheet sheet = workBook.OpenSheet("Sheet1");
//定义table对象,设置table对象的设置范围
PageOffice.ExcelWriter.Table table = sheet.OpenTable("B4:F13");
//设置table对象的提交名称,以便保存页面获取提交的数据
table.SubmitName = "Info";
PageOfficeCtrl1.SetWriter(workBook);
PageOfficeCtrl1.SaveDataPage = "SaveData.aspx";
//打开Excel文件
PageOfficeCtrl1.WebOpen("doc/test.xls", PageOffice.OpenModeType.xlsSubmitForm, "操作人姓名");
说明:若想提交数据需将属性OpenModeType的类型设置为xlsSubmitForm提交类型
在Excel.aspx页面添加JS函数Save(),如下:
function SaveFile() {
document.getElementById("PageOfficeCtrl1").WebSave();
}
如上所述,简单的就实现了Excel文档的在线打开并提交的操作。接下来开始编写保存页面。
第四步:添加保存页面。在网站中添加动态页面SaveData.aspx,在后台页面中编写代码处理Word文档提交的数据,部分代码如下:
PageOffice.ExcelReader.Workbook workBook = new PageOffice.ExcelReader.Workbook();
//打开提交的表单
PageOffice.ExcelReader.Sheet sheet = workBook.OpenSheet("Sheet1");
//打开提交的Table
PageOffice.ExcelReader.Table table = sheet.OpenTable("Info");
//是否提交了数据
while (!table.EOF)
{
//获取提交的数值
//DataFields.Count标识的是提交过来的table的列数
if (!table.DataFields.IsEmpty)//提交的Table是否为空
{
content += "<br/>月份名称:" + table.DataFields[0].Text;
... ...
... ...
}
//循环进入下一行
table.NextRow();
}
table.Close();
workBook.Close();
方案总结:
上述的示例主要是借助了PageOffice开发平台的PageOfficeCtrl控件,利用该控件还可实现在Excel文件中添加手写批注、加盖电子印章等功能。另外,在PageOffice平台下还可实现Word、PPT、PDF等文档的在线打开、编辑保存,Word文档到PDF文档的转换等等各种操作,很好地解决了开发OA系统的程序员的一大技术难题。