关于生成EXCEL文件的几点心得
本方法通过调用office的excel类库(从某种意义上说是COM组件),来创建,填写excel文件的,具体步骤如下:
1.保证本地机器安装了office,哪个版本无所谓,我在office97和office2000下都已经试验成功。
进入office的安装路径,在X:\Program Files\Microsoft Office\Office\下,找到EXCEL8.OLB(在office2000中是EXCEL9.OLB),复制该文件到你的VS安装目录,在X:\Program Files\Microsoft Visual Studio 8\SDK\V2.0\Bin\下(我用的是VS2005,在.Net2003中 换成7,V1.1即可),运行VS自带的Visual Studio Tools----〉找到“Visual Studio 2005 Command Prompt”,点击运行,在命令行中输入“tlbimp空格excel8.olb空格excel.dll”(若是office2000,换成excel9.olb),运行之后,会提示dll文件生成成功,并输出到X:\Program Files\Microsoft Visual Studio 8\VC\文件夹下,进入该文件夹,找到Excel.dll,Office.dll,VBIDE.dll这三个类库文件,把他们拷贝到你需要的application中,添加引用并using一下(using Excel;就可以了,剩下两个可以不using,但要添加引用)。
2.剩下的就是代码功能了,简单起见,制作一个按钮,在其事件代码填写就可以了,此外还需要你找几张图片,下面就是代码实现了:
2 private Excel.ApplicationClass _x;
3 private void SaveToXls(string filename)
4 {
5 //创建excel的xls文件
6 Excel.WorkbookClass wb = (Excel.WorkbookClass)this._x.Workbooks.Add(System.Reflection.Missing.Value);
7 //创建excel的xls文件中的表单
8 Excel.Worksheet eSheet = (Excel.Worksheet)wb.ActiveSheet;
9 //在单元格中填写文字
10 this._x.Cells[1, 1] = "11111";
11 this._x.Cells[21, 1] = "222222";
12 //创建图片
13 Excel.Pictures pics = (Excel.Pictures)eSheet.Pictures(Type.Missing);
14 //往范围1中插入图片c:\cp.jpg
15 pics.Insert(@"c:\cp.jpg", Type.Missing);
16 Excel.Picture pic01 = (Excel.Picture)pics.Item(1);
17 Excel.Range range1 = eSheet.get_Range('A' + 2.ToString(), 'G' + 20.ToString());
18 pic01.Left = (double)range1.Left;
19 pic01.Top = (double)range1.Top;
20 pic01.Height = (double)range1.Height;
21 pic01.Width = (double)range1.Width;
22 //往范围2中插入图片c:\cp1.jpg
23 pics.Insert(@"C:\cp1.jpg", Type.Missing);
24 Excel.Picture pic02 = (Excel.Picture)pics.Item(2);
25 Excel.Range range2 = eSheet.get_Range('A' + 22.ToString(), 'G' + 40.ToString());
26 pic02.Left = (double)range2.Left;
27 pic02.Top = (double)range2.Top;
28 pic02.Height = (double)range2.Height;
29 pic02.Width = (double)range2.Width;
30
31 wb.Saved = true;
32 this._x.ActiveWorkbook.SaveCopyAs(filename);
33 }
34 private void button1_Click(object sender, EventArgs e)
35 {
36
37 this._x = new Excel.ApplicationClass();
38 this.SaveToXls(@"c:\app.xls");
39 this._x.Quit();
40 System.Runtime.InteropServices.Marshal.ReleaseComObject((object)this._x);
41 System.GC.Collect();
42
43 }
44
45
在button1的click事件中调用SaveToXls()方法,就可以保存cp.jpg和cp1.jpg到c盘的app.xls文件中了,如果你自己动手的话,准备两张图片修改代码或者修改图片就随你了:)
差点忘了说了,问了几个同行,大概这样生成的dll文件,从底层来讲,还是去调用注册过的com组件,只不过是在com组件外层包了一个壳(读qiao4),如果本地机器没有安装office的话,会报告缺少com组件的错误信息的。
还有office2003的组件没有测试,没有找到olb,从网上看到说是excel11.olb了,应该还是用VS自带的工具生成。