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

浙公网安备 33010602011771号