关于生成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.剩下的就是代码功能了,简单起见,制作一个按钮,在其事件代码填写就可以了,此外还需要你找几张图片,下面就是代码实现了:

 

 1//创建excel程序文件
 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[11= "11111";
11            this._x.Cells[211= "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自带的工具生成。

posted @ 2007-11-13 09:17  芙蓉客  阅读(886)  评论(0编辑  收藏  举报