.net创建excel文件关键代码及部分说明
2010-01-29 21:39
471 查看
要在项目中添加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)
关于office开发 http://msdn2.microsoft.com/en-us/library/bb241279.aspx 说明OFFICE存储格式 xlExcel8 56 才是2007中存成97-2003的格式,如果有workbook的saveas方法,要加上第2个文件格式参数才能存成97-2003格式,设置defaultsaveformat没有用对这个方法。
GC.Collect();//强行销毁</p> <p> #region 强行杀死最近打开的Excel进程 System.Diagnostics.Process[] excelProc = System.Diagnostics.Process.GetProcessesByName("EXCEL"); System.DateTime startTime = new DateTime(); int m, killId = 0; for (m = 0; m < excelProc.Length; m++) { if (startTime < excelProc[m].StartTime) { startTime = excelProc[m].StartTime; killId = m; } } if (excelProc[killId].HasExited == false) { excelProc[killId].Kill(); } 但我觉得杀进程的办法在并发环境下不可用。 |
相关文章推荐
- .net创建excel文件关键代码及部分说明<转>
- .NET 通过代码创建XML文档
- 思途旅游框架部分代码说明总结
- swift 代码创建UITableView以及部分swift的讲解
- .NET调用osql.exe执行sql脚本创建表和存储过程<转> 代码
- Docker Libnetwork Bridge插件实现代码分析----创建网络部分
- 学霸数据处理项目α版本代码冗余部分消除及部分代码调整过程说明
- 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(二)后台服务代码部分
- 分享非常有用的Java程序 (关键代码) (三)---创建ZIP和JAR文件
- Rome使用简单说明二(部分关键源码分析)
- 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(一)后台控制逻辑代码部分
- .NET下编译C++代码时出现"error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int"错误的解决方法。
- [收藏].Net 图象质量控制,关键代码.
- 使用MFC搜索当前目录下所存在的某种文件,将文件名(路径等)添加到下拉框中,返回文件个数,部分关键代码。。
- 代码大全_第二部分: 创建高质量的代码
- 在.net中使用jmail发送Email(部分代码)
- 二元线性回归的部分相关代码整理及说明。
- 精通Silverlight——12.6.1 使用.NET代码创建控件
- 软件试用期及试用次数控制(附部分关键代码)!
- 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(一)后台控制逻辑代码部分