在C#中创建、读、写EXCEL文件(基于COM)
2016-03-08 21:14
591 查看
1. EXCEL Library
在使用C#中的excel模块之前,我们需要先把excel library加入到project中。首先创建一个空项目,然后创建一个按钮。随后,如下图点击“项目”->“添加引用”:
随后选择microsoft excel 1X.0 object library。
2. 在C#中编程创建excel文件
首先初始化excel objectExcel.Application excelApp = new Excel.ApplicationClass();
在创建excel workbook之前,检查系统是否安装excel
if(excelApp == null){ // if equal null means EXCEL is not installed. MessageBox.Show("Excel is not properly installed!"); return; }
判断文件是否存在,如果存在就打开workbook,如果不存在就新建一个
// open a workbook,if not exist, create a new one Excel.Workbook workBook; if(File.Exists(filename)) { workBook = excelApp.Workbooks.Open(filename, 0, false, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); } else { workBook = excelApp.Workbooks.Add(true); }
在创建完workbook之后,下一步就是新建worksheet并写入数据
//new a worksheet Excel.Worksheet workSheet = workBook.ActiveSheet as Excel.Worksheet; //write data workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(1);//获得第i个sheet,准备写入 workSheet.Cells[1, 3] = "(1,3)Content";
有两个选项可以设置,如下,visable属性设置为true的话,excel程序会启动;false的话,excel只在后台运行。
displayalert设置为true将会显示excel中的提示信息。
//set visible the Excel will run in background excelApp.Visible = false; //set false the alerts will not display excelApp.DisplayAlerts = false;
保存文件,关闭workbook
workBook.SaveAs(filename); workBook.Close(false, Missing.Value, Missing.Value);
退出并清理objects,回收内存
//quit and clean up objects excelApp.Quit(); workSheet = null; workBook = null; excelApp = null; GC.Collect();
3.完整代码
最后附上完整代码(Form_Start.cs):using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Reflection; using Excel = Microsoft.Office.Interop.Excel; namespace InfoExtraction { public partial class Form_Start : Form { public Form_Start() { InitializeComponent(); } private void Form_Start_Load(object sender, EventArgs e) { } private void button_run_Click(object sender, EventArgs e) { string currentPath = Directory.GetCurrentDirectory(); WriteExcel(currentPath + "\\results.xlsx"); MessageBox.Show("Success!"); } private void button_exit_Click(object sender, EventArgs e) { Close(); Application.Exit(); } public void WriteExcel(string filename) { //new an excel object Excel.Application excelApp = new Excel.ApplicationClass(); if(excelApp == null){ // if equal null means EXCEL is not installed. MessageBox.Show("Excel is not properly installed!"); return; } // open a workbook,if not exist, create a new one Excel.Workbook workBook; if(File.Exists(filename)) { workBook = excelApp.Workbooks.Open(filename, 0, false, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); } else { workBook = excelApp.Workbooks.Add(true); } //new a worksheet Excel.Worksheet workSheet = workBook.ActiveSheet as Excel.Worksheet; //write data workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(1);//获得第i个sheet,准备写入 workSheet.Cells[1, 3] = "(1,3)Content"; //set visible the Excel will run in background excelApp.Visible = false; //set false the alerts will not display excelApp.DisplayAlerts = false; //workBook.SaveAs(filename, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); workBook.SaveAs(filename); workBook.Close(false, Missing.Value, Missing.Value); //quit and clean up objects excelApp.Quit(); workSheet = null; workBook = null; excelApp = null; GC.Collect(); } } }
相关文章推荐
- 转载:浅析C#深拷贝与浅拷贝
- C#成魔之路<10>文件及数据流技术(3)
- C#语言基础— switch case和if的嵌套练习
- C# chart 属性
- C#中StreamReader读取中文出现乱码
- C# 5.0 aynsc 和 await ,Trace改进
- C#图片按比例缩放
- C#索引器3 重载
- C#的异步请求
- C# 序列化
- C#生成唯一机器标识码
- 转载:C#中的多态
- C#IO流文件操作
- Visual C# 的DirectX开发系列1初识DirectX
- C# 矩阵计算
- 命名参数(C#)
- 基于Visual C#的DirectX开发实例——绘制一个三角形
- 转载:C#中委托、事件与Observer设计模式
- C#-界面假死
- 转载:C#中事件和委托的编译代码