告别ASPNET操作EXCEL的烦恼(总结篇)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Copy From 告别操作EXCEL的烦恼(总结篇)

公元19XX年前,关于EXCEL的操作就如滔滔江水,连绵不绝,真正操作EXCEL我也是从去年下半年开始的,有些比较复杂的年度报表之类的,做起来也有点费力,不过还是都能画出来了,关于EXCEL的报表导出,考虑到导出耗时的问题我主要采用AJAX来做的,分别捕捉几个起止状态,给客户端提示3个状态:正在检索数据。。。---》准备导出数据。。。(只是从数据库成功取出,还没有读写excel文件)--》正在读写文件--》导出数据成功,当然如果哪一过程出错,都有对应的提示,只所以想到写这篇文章,主要是因为今年有个系统的部分EXCEL的操作也让我做,顺便结合之前操作EXCEL的经验作一下总结,可能也算不上什么,对于绝大多数来说也没什么技术含量,网上一搜一大把,但我想还是有必要总结一下,至少能给园子里的新手些许帮助,OK,Let's Go...

一. 程序操作EXCEL的应用主要还是在统计报表方面,您可能会考虑读EXCEL模板,也可能会考虑没必要读模板,其实读不读模板都能达到一样的效果,看实际情况而用了。

1. 读模板的话,首先模板存放在某个路径下,根据模板把从数据库里取出的数据写回EXCEL然后生成一个新的EXCEL存放都另一个路径以供下载,模板不变。

我这里的EXCEL操作主要是在VS2005里的,VS2003也可以的,不过没怎么研究03里的操作(文章最后我会把05,03的示例下载地址贴上)vs05中操作EXCEL直接引用.NET自带的COM组件

,添加后项目的bin目录下会自动出现

Interop.Excel.dll这个DLL(需安装office2003 excel,下面的说明及示例都是基于office2003的,版本不同调用可能会不一样)

页面的命名空间引用using Excel;

下面是调用模板的一段代码

1#region使用模板导出Excel表

2case"ReportByTemp":

3 {

4

5 DataView dv = Cache["ReportByTemp"] as DataView;

6//建立一个Excel.Application的新进程

7 Excel.Application app =new Excel.Application();

8if (app ==null)

9 {

10return;

11 }

12 app.Visible =false;

13 erControl =true;

14 Workbooks workbooks = app.Workbooks;

15 _Workbook workbook = workbooks.Add(template_path +"\\EXCEL测试模板.xls");//这

里的Add方法里的参数就是模板的路径

16 Sheets sheets = workbook.Worksheets;

17 _Worksheet worksheet = (_Worksheet)sheets.get_Item(1);//模板只有一个sheet表

18if (worksheet ==null)

19 {

20return;

21 }

22

23int rowNum =0;

24for (int i =0; i < span> dv.Count; i++)

25 {

26 rowNum = i +1;

27 worksheet.Cells[3+ i, 1] = rowNum;

28 worksheet.Cells[3+ i, 2] = dv[i].Row[0].T oString();

29 worksheet.Cells[3+ i, 3] = dv[i].Row[1].T oString();

30

31 excelOperate.SetBold(worksheet, worksheet.Cells[3+ i, 1], worksheet.Cells[3+ i, 1]); //黑体

32 excelOperate.SetHAlignCenter(worksheet, worksheet.Cells[3+ i, 1], worksheet.Cells [3+ i, 3]);//居中

33 worksheet.get_Range(worksheet.Cells[3+ i, 1], worksheet.Cells[3+ i, 3]).Borders.Col or = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);

34

35 }

36

37 tick = DateTime.Now.Ticks.ToString();

38 save_path = temp_path +"\\"+ tick +".xls";

39 workbook.SaveAs(save_path, Missing.Value, Missing.Value, Missing.Value, Missing.Va lue, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Valu e, Missing.Value, Missing.Value);

40 excelOperate.Dispose(worksheet, workbook, app);//关闭Excel进程

41

42 }

43break;

44#endregion

效果如下:

相关文档
最新文档