c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件
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);
- }
- }
结果;

c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件的更多相关文章
- Visual Studio 进行Excel相关开发,Microsoft.Office.Interop.Excel.dll库
1. Interop.Excel.dll 的查找 本文中将 Microsoft.Office.Interop.Excel.dll库简称为Interop.Excel.dll库 其实在使用Visual S ...
- Microsoft.Office.Interop.Excel 程序集引用 ,Microsoft.Office.Interop.Excel.ApplicationClass 无法嵌入互操作类型
using Microsoft.Office.Interop.Excel 添加程序集引用 方法:在引用--程序集--扩展中,添加引用Microsoft.Office.Interop.Excel,此 ...
- C# Microsoft.Office.Interop.Owc11 导出excel文件
C# Microsoft.Office.Interop.Owc11 导出excel文件 1.新建项SupremeWindowsForms窗体应用项目(项目平台设置称X86) 注意:因为大多数第三方写的 ...
- VS编程中找不到Microsoft.Office.Core、Microsoft.Office.Interop.Word和VBIDE
在使用vs2005. vs2008. vs2010 制作包含 word等office的应用程序时,有时找不到对Microsoft.Office.Core. Microsoft.Office.Inter ...
- window2008 64位系统无法调用Microsoft.Office.Interop组件进行文件另存的解决办法
生成execl时遇到的问题: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005 ...
- Excel操作 Microsoft.Office.Interop.Excel.dll的使用
----转载: http://www.cnblogs.com/lanjun/archive/2012/06/17/2552920.html 先说说题外话,前段时间近一个月,我一直在做单据导入功能,其中 ...
- C# 使用自带Microsoft.Office.Interop.Excel简单操作Excel文件
项目添加应用 Microsoft.Office.Interop.Excel.dll 文件 引用命名空间: using Excel = Microsoft.Office.Interop.Excel; 简 ...
- Microsoft.Office.Interop.Excel操作Excel文件时出现的问题及解决方案
问题描述: Microsoft.Office.Interop.Excel.Worksheet 打不开文件 Microsoft Office Excel 不能访问文件"a.xls". ...
- Microsoft.Office.Interop.Excel Find 操作
public void SearchLoactions(string filepath, int start, int end ,string expectvalue) { if (end >= ...
随机推荐
- tf 随机数
tf生成随机数 import tensorflow as tf sess = tf.InteractiveSession() ### 生成符合正态分布的随机值 # tf.random_normal(s ...
- sqlserver查询当前库下,一张表的表名,字段名,字段类型,字段长度
sqlserver版: 查询当前数据库下所有表名: select * from sys.tables; 查询当前库下,一张表的表名,字段名,字段类型,字段长度: select a.name 表名,b. ...
- 读书笔记--《gongchandang宣言》
纪念马克思诞辰200周年 末尾 gongchandang人不屑于隐瞒自己的观点和意图.他们公开宣布:他们的目的只有用暴力推翻全部现存的社会制度才能达到. 让统治接机在共产主义革命面前发抖吧. 无产者在 ...
- ID3-C45-CART
区别:使用不同的属性选择度量. 信息增益偏向多值属性 信息增益率倾向产生不平衡的划分 基尼指数偏向多值属性,并且当类的数量很大时会有困难,还倾向于导致相等大小的分区和纯度 C4.5: 优点:产生的分类 ...
- EBS获取code_combination_id(CCID)时段值自动被置为默认值的问题
EBS中在使用标准的API(FND_FLEX_EXT.GET_COMBINATION_ID 和 FND_FLEX_EXT.GET_CCID还有fnd_flex_keyval.validate_segs ...
- PythonStudy——函数的使用 Use of functions
# print(a) # a = 10 # 注意:函数必须先定义,后使用 # print(get_water) def get_water(water, money): print('收入你的%d元钱 ...
- C++ Primer Plus (Stephen Prata 著)
第1章 预备知识 (已看) 第2章 开始学习C++ (已看) 第3章 处理数据 (已看) 第4章 复合类型 (已看) 第5章 循环和关系表达式 (已看) 第6章 分支语句和逻辑运算符 (已看) 第7章 ...
- PHP的 preg_match_all
语法:int preg_match_all ( string pattern, string subject, array &matches [, int flags] ) 这个函数的返回值是 ...
- qsort函数排序各种类型的数据。
qsort函数是库函数中的一员,我们先来看看官方文档是怎么写的: 其中qsort的参数void* base是传入一个数组,size_t num 为数组整体大小,size_t size 为单个元素的大小 ...
- python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例)
如下表 模式 可做操作 若文件不存在 是否覆盖 r 只能读 报错 - r+ 可读可写 报错 是 w 只能写 创建 是 w+ 可读可写 创建 是 a 只能写 创建 否,追加写 a+ 可读可写 创建 ...