c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件
来源:互联网 发布:fabrication软件下载 编辑:程序博客网 时间:2024/05/03 02:24
1、引用Microsoft.Office.Interop.Excel.dll
2、引用命名空间、使用别名
using System.Reflection;using Excel = Microsoft.Office.Interop.Excel;
3.写入excel
写入函数
public void ToExcel(string strTitle) { int nMax = 9; int nMin = 4; int rowCount = nMax - nMin + 1;//总行数 const int columnCount = 4;//总列数 //创建Excel对象 Excel.Application excelApp = new Excel.ApplicationClass(); //新建工作簿 Excel.Workbook workBook = excelApp.Workbooks.Add(true); //新建工作表 Excel.Worksheet worksheet = workBook.ActiveSheet as Excel.Worksheet; ////设置标题 //Excel.Range titleRange = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, columnCount]);//选取单元格 //titleRange.Merge(true);//合并单元格 //titleRange.Value2 = strTitle; //设置单元格内文本 //titleRange.Font.Name = "宋体";//设置字体 //titleRange.Font.Size = 18;//字体大小 //titleRange.Font.Bold = false;//加粗显示 //titleRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中 //titleRange.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;//垂直居中 //titleRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//设置边框 //titleRange.Borders.Weight = Excel.XlBorderWeight.xlThin;//边框常规粗细 //设置表头 string[] strHead = new string[columnCount] { "序号", "范围", "分组1", "分组2" }; int[] columnWidth = new int[4] { 8, 16, 8, 10 }; for (int i = 0; i < columnCount; i++) { //Excel.Range headRange = worksheet.Cells[2, i + 1] as Excel.Range;//获取表头单元格 Excel.Range headRange = worksheet.Cells[1, i + 1] as Excel.Range;//获取表头单元格,不用标题则从1开始 headRange.Value2 = strHead[i];//设置单元格文本 headRange.Font.Name = "宋体";//设置字体 headRange.Font.Size = 12;//字体大小 headRange.Font.Bold = false;//加粗显示 headRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中 headRange.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;//垂直居中 headRange.ColumnWidth = columnWidth[i];//设置列宽 // headRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//设置边框 // headRange.Borders.Weight = Excel.XlBorderWeight.xlThin;//边框常规粗细 } //设置每列格式 for (int i = 0; i < columnCount; i++) { //Excel.Range contentRange = worksheet.get_Range(worksheet.Cells[3, i + 1], worksheet.Cells[rowCount - 1 + 3, i + 1]); Excel.Range contentRange = worksheet.get_Range(worksheet.Cells[2, i + 1], worksheet.Cells[rowCount - 1 + 3, i + 1]);//不用标题则从第二行开始 contentRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中 contentRange.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;//垂直居中 //contentRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//设置边框 // contentRange.Borders.Weight = Excel.XlBorderWeight.xlThin;//边框常规粗细 contentRange.WrapText = true;//自动换行 contentRange.NumberFormatLocal = "@";//文本格式 } //填充数据 for (int i = nMin; i <= nMax; i++) { int k = i - nMin; //excelApp.Cells[k + 3, 1] = string.Format("{0}", k + 1); //excelApp.Cells[k + 3, 2] = string.Format("{0}-{1}", i - 0.5, i + 0.5); //excelApp.Cells[k + 3, 3] = string.Format("{0}", k + 3); //excelApp.Cells[k + 3, 4] = string.Format("{0}", k + 4); excelApp.Cells[k + 2, 1] = string.Format("{0}", k + 1); excelApp.Cells[k + 2, 2] = string.Format("{0}-{1}", i - 0.5, i + 0.5); excelApp.Cells[k + 2, 3] = string.Format("{0}", k + 3); excelApp.Cells[k + 2, 4] = string.Format("{0}", k + 4); } //设置Excel可见 excelApp.Visible = true; }
写入按钮函数:
private void button1_Click(object sender, EventArgs e) { ToExcel("方式3"); }
结果:
4.读取excel
添加一个opendiog用于选择要读取的excel
命名空间
using System.Diagnostics;
读取函数:
private void OpenExcel(string strFileName) { object missing = System.Reflection.Missing.Value; Excel.Application excel = new Excel.ApplicationClass();//lauch excel application if (excel == null) { this.label1.Text="Can't access excel"; } else { excel.Visible = false; excel.UserControl = true; // 以只读的形式打开EXCEL文件 Excel.Workbook wb = excel.Application.Workbooks.Open(strFileName, missing, true, missing, missing, missing, missing, missing, missing, true, missing, missing, missing, missing, missing); //取得第一个工作薄 Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets.get_Item(1); //取得总记录行数 (包括标题列) int rowsint = ws.UsedRange.Cells.Rows.Count; //得到行数 //int columnsint = mySheet.UsedRange.Cells.Columns.Count;//得到列数 //取得数据范围区域 (不包括标题列) Excel.Range rng1 = ws.Cells.get_Range("A2", "A" + rowsint); Excel.Range rng2 = ws.Cells.get_Range("B2", "B" + rowsint); Excel.Range rng3 = ws.Cells.get_Range("C2", "C" + rowsint); Excel.Range rng4 = ws.Cells.get_Range("D2", "D" + rowsint); object[,] arry1 = (object[,])rng1.Value2; //get range's value object[,] arry2 = (object[,])rng2.Value2; object[,] arry3 = (object[,])rng3.Value2; //get range's value object[,] arry4 = (object[,])rng4.Value2; //将新值赋给一个数组 string[,] arry = new string[rowsint - 1, 4]; //for (int i = 1; i <= rowsint - 1; i++) for (int i = 1; i <= rowsint - 2; i++) { arry[i - 1, 0] = arry1[i, 1].ToString(); arry[i - 1, 1] = arry2[i, 1].ToString(); arry[i - 1, 2] = arry3[i, 1].ToString(); arry[i - 1, 3] = arry4[i, 1].ToString(); } string a = ""; for (int i = 0; i <= rowsint - 3; i++) { a += arry[i, 0] + "|" + arry[i, 1] + "|" + arry[i, 2] + "|" + arry[i, 3]+"\n"; } this.label1.Text=a; } excel.Quit(); excel = null; Process[] procs = Process.GetProcessesByName("excel"); foreach (Process pro in procs) { pro.Kill();//没有更好的方法,只有杀掉进程 } GC.Collect(); }
读取按钮代码:
private void button1_Click(object sender, EventArgs e) { if (openFileDialog.ShowDialog() == DialogResult.OK) { OpenExcel(openFileDialog.FileName); } }
结果;
0 0
- c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件
- c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件
- C#使用Microsoft.Office.Interop.Excel.dll读取Excel文件
- 【转载】Excel操作 Microsoft.Office.Interop.Excel.dll的使用
- 引用Microsoft.Office.Interop.Excel.dll操作Excel常用方法
- C#利用Microsoft.Office.Interop.Excel导出excel文件
- C#编程读取Excel文件,引用Microsoft.Office.Interop.Excel出现的问题
- 转:C#编程读取Excel文件,引用Microsoft.Office.Interop.Excel出现的问题
- 数据转换excel操作 Microsoft.Office.Interop.Excel.dll的使用
- C#操作EXCEL--使用Microsoft.Office.Interop.Excel,来自.netV1.2
- NPOI读写Excel 或 Microsoft.Office.Interop.Excel 读取excel
- (转).net使用Office组件读取Excel,引用Microsoft.Office.Interop.Excel出现的问题
- 使用Office组件读取Excel,引用Microsoft.Office.Interop.Excel出现的问题
- 转:使用Office组件读取Excel,引用Microsoft.Office.Interop.Excel出现的问题
- C#学习之用Microsoft.office.interop.excel.dll导出excel
- C# 结合Microsoft.Office.Interop.Excel写入Excel
- C#处理excel引用Microsoft.Office.Interop.Excel
- Microsoft.Office.Interop.Excel 操作excel到DataTable中
- socket编程基础
- 03循环结构
- 位图排序[成为程序员的道路上的第一篇blog]
- 算法基础一 穷举法
- JVM GC之一找出不可达对象并回收
- c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件
- 关于是否凸边形的判断
- 黑马程序员——多线程3:线程安全
- 数据库-----catalog与schema简介
- 04数组 字符数组
- centos开防火墙后能ping通IP, ping不通域名
- Android 实现微信,QQ的程序前后台切换:back键切换后台;点击通知栏恢复前台。
- 大头锻炼日记7 -- vbscript的链表队列Queue
- Android - 插入数据库(SQLite)错误