.net创建excel文件关键代码及部分说明
要在项目中添加com引用microsoft excel 11.0 object libary
Excel.ApplicationClass ac = new Excel.ApplicationClass();//application相当于excel执行程序,就是excel.exe
ac.DefaultFilePath = "";
ac.SheetsInNewWorkbook = 2;//在创建excel的xls文件的时候默认有两个sheet
ac.DisplayAlerts = false;//在执行saveas方法时候不弹出提示对话框,比如有同名文件是否覆盖,设成false会直接覆盖
Excel.Workbook wb = ac.Workbooks.Add(Type.Missing);//Workbook相当于一个excel的xls文件
Excel.Worksheet ws = (Excel.Worksheet)ac.Worksheets[2];//因为前面设置了有两个sheet,所以这里是取得第2个sheet, Worksheet相当于excel文件中的一个sheet,另外注意excel的索引都是从1开始的
ws.Cells[1, 1] = "hello121";//往第2个sheet中的第1行第1列的格子中赋值"hello";
ac.Cells[1, 2] = "i love u";//这是往第一个sheet赋值,当像applicationclass中添加了workbook后它的cells应该只能访问到第1个sheet中的cell
//保存文件,Excel.XlSaveAsAccessMode是设置文件的访问方式的,其他的参数可以省略
wb.SaveAs(@"e:\a\test.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missin,Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
//重要,关闭excel,清除掉excel.exe进程
ac.Workbooks.Close();//关闭所有文件
ac.Quit();//结束excel.exe,这行必须有,没有上一行也可以,就相当于关闭了excel应用程序,其中的文件也一同关闭了
//以下几行至关重要,在ASP.NET中如无这几行,会导致excel进程无法清除的情况,这样最后会导致内存被每次导出启动的excel进程撑死,只有加上以下几行,才能将进程关闭。
int generation = GC.GetGeneration(ac);
System.Runtime.InteropServices.Marshal.ReleaseComObject(ac);
ac = null;
GC.Collect(generation);
ExcelApplication.WorkBook.SaveAs(filename,FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodePage, TextVisualLayout ,Local)
1、Filename: Variant 类型,可选。该字符串表示要保存的文件名。可包含完整路径。如果不指定路径,Microsoft Excel 将文件保存到当前文件夹中。
2、FileFormat: Variant 类型,可选。保存文件时使用的文件格式。要得到有效选项的列表,请参阅 FileFormat 属性。对于已有文件,其默认格式是上次指定的文件格式;对于新文件,默认格式为当前使用的 Excel 版本格式 ,可选常数如下:
xlAddIn 18
xlCSV 6
xlCSVMac 22
xlCSVMSDOS 24
xlCSVWindows 23
xlCurrentPlatformText -4158
xlDBF2 7
xlDBF3 8
xlDBF4 11
xlDIF 9
xlExcel2 16
xlExcel2FarEast 27
xlExcel3 29
xlExcel4 33
xlExcel4Workbook 35
xlExcel5 39
xlExcel7 39
xlExcel9795 43
xlHtml 44
xlIntlAddIn 26
xlIntlMacro 25
xlSYLK 2
xlTemplate 17
xlTextMac 19
xlTextMSDOS 21
xlTextPrinter 36
xlTextWindows 20
xlUnicodeText 42
xlWebArchive 45
xlWJ2WD1 14
xlWJ3 40
xlWJ3FJ3 41
xlWK1 5
xlWK1ALL 31
xlWK1FMT 30
xlWK3 15
xlWK3FM3 32
xlWK4 38
xlWKS 4
xlWorkbookNormal -4143
xlWorks2FarEast 28
xlWQ1 34
xlXMLData 47
xlXMLSpreadsheet 46
3、Password :Variant 类型,可选。它是一个区分大小写的字符串(最长不超过 15 个字符),用于指定文件的保护密码。
4、WriteResPassword :Variant 类型,可选。 该字符串表示文件的写保护密码。如果文件保存时带有密码,但打开文件时不输入密码,则该文件以只读方式打开。
5、ReadOnlyRecommended : Variant 类型,可选。如果该值为 True,则在打开文件时显示一条信息,提示该文件以只读方式打开。
6、CreateBackup: Variant 类型,可选。如果该值为 True,则创建备份文件。
7、AccessMode :XlSaveAsAccessMode 类型,可选,如果省略此参数,则不会更改访问方式。如果在没有改变文件名的情况下保存共享列表,则可以忽略参数。若要改变访问方式,请使用 ExclusiveAccess 方法。 以下是可选常量:xlExclusive 3 不含方式xlNoChange 1 不更改访问方式,缺省值xlShared 2 共享列表
8、ConflictResolution : XlSaveConflictResolution 类型,如果忽略本参数,则显示****处理对话框。可选常量如下:
xlLocalSessionChanges 2 自动接受本地用户的修改
xlOtherSessionChanges 3 接受除本地用户之外的其他用户的更改
xlUserResolution 1 显示****解决方案对话框
9、AddToMru :Variant 类型,可选。如果该值为 True ,则将该工作簿添加到最近使用的文件列表中。默认值为 False。
10、TextCodePage :Variant 类型,可选。不在美国英语版的 Microsoft Excel 中使用。
11、TextVisualLayout :Variant 类型,可选。不在美国英语版的 Microsoft Excel 中使用。
12、Local :Variant 类型,可选。如果该值为 True,则以 Microsoft Excel(包括控制面板设置)的语言保存文件。如果该值为 False(默认值),则以 Visual Basic for Applications (VBA) 的语言保存文件,其中 Visual Basic for Applications (VBA) 为典型安装的美国英语版本,除非 VBA 项目中的 Workbooks.Open 来自旧的国际化的 XL5/95 VBA 项目
excel大致的模式应该是composition模式。
applicationclass (excel应该程序)->(包含)Workbook(excel文档)->(包含)Worksheet(文档中的sheet)->(包含)Range(cell)
Excel.ApplicationClass ac = new Excel.ApplicationClass();//application相当于excel执行程序,就是excel.exe
ac.DefaultFilePath = "";
ac.SheetsInNewWorkbook = 2;//在创建excel的xls文件的时候默认有两个sheet
ac.DisplayAlerts = false;//在执行saveas方法时候不弹出提示对话框,比如有同名文件是否覆盖,设成false会直接覆盖
Excel.Workbook wb = ac.Workbooks.Add(Type.Missing);//Workbook相当于一个excel的xls文件
Excel.Worksheet ws = (Excel.Worksheet)ac.Worksheets[2];//因为前面设置了有两个sheet,所以这里是取得第2个sheet, Worksheet相当于excel文件中的一个sheet,另外注意excel的索引都是从1开始的
ws.Cells[1, 1] = "hello121";//往第2个sheet中的第1行第1列的格子中赋值"hello";
ac.Cells[1, 2] = "i love u";//这是往第一个sheet赋值,当像applicationclass中添加了workbook后它的cells应该只能访问到第1个sheet中的cell
//保存文件,Excel.XlSaveAsAccessMode是设置文件的访问方式的,其他的参数可以省略
wb.SaveAs(@"e:\a\test.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missin,Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
//重要,关闭excel,清除掉excel.exe进程
ac.Workbooks.Close();//关闭所有文件
ac.Quit();//结束excel.exe,这行必须有,没有上一行也可以,就相当于关闭了excel应用程序,其中的文件也一同关闭了
//以下几行至关重要,在ASP.NET中如无这几行,会导致excel进程无法清除的情况,这样最后会导致内存被每次导出启动的excel进程撑死,只有加上以下几行,才能将进程关闭。
int generation = GC.GetGeneration(ac);
System.Runtime.InteropServices.Marshal.ReleaseComObject(ac);
ac = null;
GC.Collect(generation);
ExcelApplication.WorkBook.SaveAs(filename,FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodePage, TextVisualLayout ,Local)
1、Filename: Variant 类型,可选。该字符串表示要保存的文件名。可包含完整路径。如果不指定路径,Microsoft Excel 将文件保存到当前文件夹中。
2、FileFormat: Variant 类型,可选。保存文件时使用的文件格式。要得到有效选项的列表,请参阅 FileFormat 属性。对于已有文件,其默认格式是上次指定的文件格式;对于新文件,默认格式为当前使用的 Excel 版本格式 ,可选常数如下:
xlAddIn 18
xlCSV 6
xlCSVMac 22
xlCSVMSDOS 24
xlCSVWindows 23
xlCurrentPlatformText -4158
xlDBF2 7
xlDBF3 8
xlDBF4 11
xlDIF 9
xlExcel2 16
xlExcel2FarEast 27
xlExcel3 29
xlExcel4 33
xlExcel4Workbook 35
xlExcel5 39
xlExcel7 39
xlExcel9795 43
xlHtml 44
xlIntlAddIn 26
xlIntlMacro 25
xlSYLK 2
xlTemplate 17
xlTextMac 19
xlTextMSDOS 21
xlTextPrinter 36
xlTextWindows 20
xlUnicodeText 42
xlWebArchive 45
xlWJ2WD1 14
xlWJ3 40
xlWJ3FJ3 41
xlWK1 5
xlWK1ALL 31
xlWK1FMT 30
xlWK3 15
xlWK3FM3 32
xlWK4 38
xlWKS 4
xlWorkbookNormal -4143
xlWorks2FarEast 28
xlWQ1 34
xlXMLData 47
xlXMLSpreadsheet 46
3、Password :Variant 类型,可选。它是一个区分大小写的字符串(最长不超过 15 个字符),用于指定文件的保护密码。
4、WriteResPassword :Variant 类型,可选。 该字符串表示文件的写保护密码。如果文件保存时带有密码,但打开文件时不输入密码,则该文件以只读方式打开。
5、ReadOnlyRecommended : Variant 类型,可选。如果该值为 True,则在打开文件时显示一条信息,提示该文件以只读方式打开。
6、CreateBackup: Variant 类型,可选。如果该值为 True,则创建备份文件。
7、AccessMode :XlSaveAsAccessMode 类型,可选,如果省略此参数,则不会更改访问方式。如果在没有改变文件名的情况下保存共享列表,则可以忽略参数。若要改变访问方式,请使用 ExclusiveAccess 方法。 以下是可选常量:xlExclusive 3 不含方式xlNoChange 1 不更改访问方式,缺省值xlShared 2 共享列表
8、ConflictResolution : XlSaveConflictResolution 类型,如果忽略本参数,则显示****处理对话框。可选常量如下:
xlLocalSessionChanges 2 自动接受本地用户的修改
xlOtherSessionChanges 3 接受除本地用户之外的其他用户的更改
xlUserResolution 1 显示****解决方案对话框
9、AddToMru :Variant 类型,可选。如果该值为 True ,则将该工作簿添加到最近使用的文件列表中。默认值为 False。
10、TextCodePage :Variant 类型,可选。不在美国英语版的 Microsoft Excel 中使用。
11、TextVisualLayout :Variant 类型,可选。不在美国英语版的 Microsoft Excel 中使用。
12、Local :Variant 类型,可选。如果该值为 True,则以 Microsoft Excel(包括控制面板设置)的语言保存文件。如果该值为 False(默认值),则以 Visual Basic for Applications (VBA) 的语言保存文件,其中 Visual Basic for Applications (VBA) 为典型安装的美国英语版本,除非 VBA 项目中的 Workbooks.Open 来自旧的国际化的 XL5/95 VBA 项目
excel大致的模式应该是composition模式。
applicationclass (excel应该程序)->(包含)Workbook(excel文档)->(包含)Worksheet(文档中的sheet)->(包含)Range(cell)