有两种方案:
1.用Excel自动化技术 。
引用Excel的类型库生成.Net的包装类 。导入时采用页面放上传文件按钮的方法,在服务器端收到文件后 , 用excel自动化类打开excel文件,再学会VBA语法,书写大量的代码读取单元格 , 然后连接数据库保存 。导出时,查询数据库,启动excel自动化对象,通过VBA语法填写单元格,保存成excel文件,再用Response.OutputStream输出到页面上 , 触发excel文件的下载保存框 。缺点:容易在服务器端产生excel死进程,代码编写复杂、代码量大、还要掌握VBA语法,用户需要上传、下载操作
有人会说,显示数据时可以用网页直接显示,不用导出成excel 。其实也很麻烦:用网页显示复杂的报表格式,网页设计工作量大;如果客户要求导出excel,这个工作就省不了;如果客户要求打印、打印预览、页面设置,比起excel浏览器的打印就捉襟见肘了 。
2.用微软Office中间件——SOAOffice 。(建议使用最新版的)
用SOAOffice输出Excel,就不会再有上述烦恼 。通过SOAOffice不仅能够动态填充excel,读取excel单元格,而且还能在浏览器里直接浏览excel、或者下载、另存 。SOAOffice提供标准C#.Net组件 , 组件在服务器端不使用自动化调用,稳定支持大量web并发访问,这是用com调用无法实现的 。组件的属性方法都比较简单,易于调用 , 你完全不用去掌握复杂的VBA调用 。
由于是纯.Net组件,所以服务器端不需安装office 。SOAOffice的excel组件SOAExcel含有Sheet、Cell等类似Excel的简化接口 , 调用简单 。SOAExcel不但能能把数据库字段值动态填充到Excel单元格,还能把用户输入的单元格的值提出给开发者保存到数据库 。
SOAExcel能够在客户端浏览器的网页里通过SOAOffice直接显示生成的Excel , 用户不必先下载再打开观看内容 。
举个导出excel的例子:
SOAOfficeX.ExcelResponse SOAExcel = new SOAOfficeX.ExcelResponse();
SOAOfficeX.ExcelResSheet sheet1 = SOAExcel.openSheet("Sheet1"); // 打开一个Sheet
sheet1.openCell("D"+String.valueOf(8+i)).setValue(rs.getString("Count")); //循环填充数据 。
SOAOfficeX.SOAOfficeCtrl SOACtrl = new SOAOfficeX.SOAOfficeCtrl(response);
SOACtrl.assign(SOAExcel); // 绑定数据
// 打开模板并生成最终的excel报表
SOACtrl.webOpen("doc/test.xls", 1, UserName, "Excel.Sheet");
上述代码不但动态填充生成excel,而且在网页里直接显示生成的Excel给终端用户 , 由于使用了1打开模式,Excel是只读显示的 。
读取excel单元格的代码也很简单:
SOAOfficeX.ExcelRequest SOAExcel = new SOAOfficeX.ExcelRequest();
SOAOfficeX.IExcelReqSheet sheetOrder = SOAExcel.OpenSheet("销售订单");
SOAOfficeX.IExcelReqCellcell1;
cell1 = sheetOrder.OpenCell("I5");//订单编码
string sOrderNum = cell1.Value;//cell1.Value就是读取的结果
vb.net中 导出excel表格代码怎么写private void ExportExcelFromDataGrid
( string filename , System.Web.UI.WebControls.DataGrid ToExcelGrid )
...{
Response.Clear();
Response.Buffer=true;
Response.Charset="utf-8";
Response.AppendHeader("Content-Disposition","attachment;filename="+Server.UrlEncode ( filename ) );
Response.ContentEncoding=System.Text.Encoding.Default;//设置输出流为简体中文
Response.ContentType="application/ms-excel";//设置输出文件类型为excel文件 。
this.EnableViewState=false;
System.Globalization.CultureInfomyCItrad=
newSystem.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriteroStringWriter=newSystem.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriteroHtmlTextWriter=
newSystem.Web.UI.HtmlTextWriter(oStringWriter);
推荐阅读
- 怎样在家里用电脑直播电视,怎么在电脑上直播电视剧
- thinkphp微信商城源码,php开源微商城
- linuxrpm命令,linux rmp命令
- vga如何转化成ppt,vga转cga
- linux起动端口命令 启动端口linux
- 静默安装oracle字符集,oracle静默安装脚本
- 巨人格斗是游戏还是真的,巨人游戏是什么
- oracle查询有数据的表,oracle查询所有表数据
- 老男孩go语言大纲 老男孩golang