1、引用Microsoft.Office.Interop.Excel.dll

2、引用命名空间、使用别名

  1. using System.Reflection;
  2. using Excel = Microsoft.Office.Interop.Excel;

3.写入excel

写入函数

  1. public void ToExcel(string strTitle)
  2. {
  3. int nMax = 9;
  4. int nMin = 4;
  5. int rowCount = nMax - nMin + 1;//总行数
  6. const int columnCount = 4;//总列数
  7. //创建Excel对象
  8. Excel.Application excelApp = new Excel.ApplicationClass();
  9. //新建工作簿
  10. Excel.Workbook workBook = excelApp.Workbooks.Add(true);
  11. //新建工作表
  12. Excel.Worksheet worksheet = workBook.ActiveSheet as Excel.Worksheet;
  13. ////设置标题
  14. //Excel.Range titleRange = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, columnCount]);//选取单元格
  15. //titleRange.Merge(true);//合并单元格
  16. //titleRange.Value2 = strTitle; //设置单元格内文本
  17. //titleRange.Font.Name = "宋体";//设置字体
  18. //titleRange.Font.Size = 18;//字体大小
  19. //titleRange.Font.Bold = false;//加粗显示
  20. //titleRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中
  21. //titleRange.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;//垂直居中
  22. //titleRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//设置边框
  23. //titleRange.Borders.Weight = Excel.XlBorderWeight.xlThin;//边框常规粗细
  24. //设置表头
  25. string[] strHead = new string[columnCount] { "序号", "范围", "分组1", "分组2" };
  26. int[] columnWidth = new int[4] { 8, 16, 8, 10 };
  27. for (int i = 0; i < columnCount; i++)
  28. {
  29. //Excel.Range headRange = worksheet.Cells[2, i + 1] as Excel.Range;//获取表头单元格
  30. Excel.Range headRange = worksheet.Cells[1, i + 1] as Excel.Range;//获取表头单元格,不用标题则从1开始
  31. headRange.Value2 = strHead[i];//设置单元格文本
  32. headRange.Font.Name = "宋体";//设置字体
  33. headRange.Font.Size = 12;//字体大小
  34. headRange.Font.Bold = false;//加粗显示
  35. headRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中
  36. headRange.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;//垂直居中
  37. headRange.ColumnWidth = columnWidth[i];//设置列宽
  38. //  headRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//设置边框
  39. // headRange.Borders.Weight = Excel.XlBorderWeight.xlThin;//边框常规粗细
  40. }
  41. //设置每列格式
  42. for (int i = 0; i < columnCount; i++)
  43. {
  44. //Excel.Range contentRange = worksheet.get_Range(worksheet.Cells[3, i + 1], worksheet.Cells[rowCount - 1 + 3, i + 1]);
  45. Excel.Range contentRange = worksheet.get_Range(worksheet.Cells[2, i + 1], worksheet.Cells[rowCount - 1 + 3, i + 1]);//不用标题则从第二行开始
  46. contentRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中
  47. contentRange.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;//垂直居中
  48. //contentRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//设置边框
  49. // contentRange.Borders.Weight = Excel.XlBorderWeight.xlThin;//边框常规粗细
  50. contentRange.WrapText = true;//自动换行
  51. contentRange.NumberFormatLocal = "@";//文本格式
  52. }
  53. //填充数据
  54. for (int i = nMin; i <= nMax; i++)
  55. {
  56. int k = i - nMin;
  57. //excelApp.Cells[k + 3, 1] = string.Format("{0}", k + 1);
  58. //excelApp.Cells[k + 3, 2] = string.Format("{0}-{1}", i - 0.5, i + 0.5);
  59. //excelApp.Cells[k + 3, 3] = string.Format("{0}", k + 3);
  60. //excelApp.Cells[k + 3, 4] = string.Format("{0}", k + 4);
  61. excelApp.Cells[k + 2, 1] = string.Format("{0}", k + 1);
  62. excelApp.Cells[k + 2, 2] = string.Format("{0}-{1}", i - 0.5, i + 0.5);
  63. excelApp.Cells[k + 2, 3] = string.Format("{0}", k + 3);
  64. excelApp.Cells[k + 2, 4] = string.Format("{0}", k + 4);
  65. }
  66. //设置Excel可见
  67. excelApp.Visible = true;
  68. }

写入按钮函数:

  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. ToExcel("方式3");
  4. }

结果:

4.读取excel

添加一个opendiog用于选择要读取的excel

命名空间

  1. using System.Diagnostics;

读取函数:

  1. private void OpenExcel(string strFileName)
  2. {
  3. object missing = System.Reflection.Missing.Value;
  4. Excel.Application excel = new Excel.ApplicationClass();//lauch excel application
  5. if (excel == null)
  6. {
  7. this.label1.Text="Can't access excel";
  8. }
  9. else
  10. {
  11. excel.Visible = false; excel.UserControl = true;
  12. // 以只读的形式打开EXCEL文件
  13. Excel.Workbook wb = excel.Application.Workbooks.Open(strFileName, missing, true, missing, missing, missing,
  14. missing, missing, missing, true, missing, missing, missing, missing, missing);
  15. //取得第一个工作薄
  16. Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets.get_Item(1);
  17. //取得总记录行数    (包括标题列)
  18. int rowsint = ws.UsedRange.Cells.Rows.Count; //得到行数
  19. //int columnsint = mySheet.UsedRange.Cells.Columns.Count;//得到列数
  20. //取得数据范围区域   (不包括标题列)
  21. Excel.Range rng1 = ws.Cells.get_Range("A2", "A" + rowsint);
  22. Excel.Range rng2 = ws.Cells.get_Range("B2", "B" + rowsint);
  23. Excel.Range rng3 = ws.Cells.get_Range("C2", "C" + rowsint);
  24. Excel.Range rng4 = ws.Cells.get_Range("D2", "D" + rowsint);
  25. object[,] arry1 = (object[,])rng1.Value2;   //get range's value
  26. object[,] arry2 = (object[,])rng2.Value2;
  27. object[,] arry3 = (object[,])rng3.Value2;   //get range's value
  28. object[,] arry4 = (object[,])rng4.Value2;
  29. //将新值赋给一个数组
  30. string[,] arry = new string[rowsint - 1, 4];
  31. //for (int i = 1; i <= rowsint - 1; i++)
  32. for (int i = 1; i <= rowsint - 2; i++)
  33. {
  34. arry[i - 1, 0] = arry1[i, 1].ToString();
  35. arry[i - 1, 1] = arry2[i, 1].ToString();
  36. arry[i - 1, 2] = arry3[i, 1].ToString();
  37. arry[i - 1, 3] = arry4[i, 1].ToString();
  38. }
  39. string a = "";
  40. for (int i = 0; i <= rowsint - 3; i++)
  41. {
  42. a += arry[i, 0] + "|" + arry[i, 1] + "|" + arry[i, 2] + "|" + arry[i, 3]+"\n";
  43. }
  44. this.label1.Text=a;
  45. }
  46. excel.Quit(); excel = null;
  47. Process[] procs = Process.GetProcessesByName("excel");
  48. foreach (Process pro in procs)
  49. {
  50. pro.Kill();//没有更好的方法,只有杀掉进程
  51. }
  52. GC.Collect();
  53. }

读取按钮代码:

  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. if (openFileDialog.ShowDialog() == DialogResult.OK)
  4. {
  5. OpenExcel(openFileDialog.FileName);
  6. }
  7. }

结果;

c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件的更多相关文章

  1. Visual Studio 进行Excel相关开发,Microsoft.Office.Interop.Excel.dll库

    1. Interop.Excel.dll 的查找 本文中将 Microsoft.Office.Interop.Excel.dll库简称为Interop.Excel.dll库 其实在使用Visual S ...

  2. Microsoft.Office.Interop.Excel 程序集引用 ,Microsoft.Office.Interop.Excel.ApplicationClass 无法嵌入互操作类型

    using Microsoft.Office.Interop.Excel   添加程序集引用 方法:在引用--程序集--扩展中,添加引用Microsoft.Office.Interop.Excel,此 ...

  3. C# Microsoft.Office.Interop.Owc11 导出excel文件

    C# Microsoft.Office.Interop.Owc11 导出excel文件 1.新建项SupremeWindowsForms窗体应用项目(项目平台设置称X86) 注意:因为大多数第三方写的 ...

  4. VS编程中找不到Microsoft.Office.Core、Microsoft.Office.Interop.Word和VBIDE

    在使用vs2005. vs2008. vs2010 制作包含 word等office的应用程序时,有时找不到对Microsoft.Office.Core. Microsoft.Office.Inter ...

  5. window2008 64位系统无法调用Microsoft.Office.Interop组件进行文件另存的解决办法

    生成execl时遇到的问题: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005 ...

  6. Excel操作 Microsoft.Office.Interop.Excel.dll的使用

    ----转载: http://www.cnblogs.com/lanjun/archive/2012/06/17/2552920.html 先说说题外话,前段时间近一个月,我一直在做单据导入功能,其中 ...

  7. C# 使用自带Microsoft.Office.Interop.Excel简单操作Excel文件

    项目添加应用 Microsoft.Office.Interop.Excel.dll 文件 引用命名空间: using Excel = Microsoft.Office.Interop.Excel; 简 ...

  8. Microsoft.Office.Interop.Excel操作Excel文件时出现的问题及解决方案

    问题描述: Microsoft.Office.Interop.Excel.Worksheet 打不开文件 Microsoft Office Excel 不能访问文件"a.xls". ...

  9. Microsoft.Office.Interop.Excel Find 操作

    public void SearchLoactions(string filepath, int start, int end ,string expectvalue) { if (end >= ...

随机推荐

  1. 阶段01Java基础day22IO流03

    22.01_IO流(序列流) 1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推. 2.使用方式 整合 ...

  2. Sql语句内功心法

    CREATE SCHEMA <模式名> AUTHORIZATION <用户名> 定义模式实际上定义了一个命名空间,在这个空间可以进一步定义该模式包含的数据库对象,例如基本表,视 ...

  3. Linux的相关概念

    1 Linux的相关概念 1.1 什么是操作系统? 操作系统(英语:operating system,缩写:OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石.操作系统需要处 ...

  4. 北大poj- 1032

    Parliament Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18707   Accepted: 7941 Descr ...

  5. 7--Python入门--条件和循环

    5.1 条件语句 条件语句基本框架如下:if 判断语句1: 执行语句块1elif 判断语句2: 执行语句块2else: 执行语句块3 a = 10 if a%2 == 0 : #这里使用了取余函数% ...

  6. Spring boot JPA 用自定义主键策略 生成自定义主键ID

    最近学习Spring boot JPA 学习过程解决的一些问题写成随笔,大家一起成长.这次遇到自定义主键的问题 package javax.persistence; public enum Gener ...

  7. Ubuntu16.04的sublime text3 的安装教程

    1. sublime text3的官网位置 https://www.sublimetext.com/3 2.apt安装方式 1.  安装 GPG -key: wget -qO - https://do ...

  8. Python基础-socketserver

    ocketserver通讯模块实现并发操作,基于select.epoll.socket.多线程,实现的正真多线程多并发 socketserver通讯模块底层调用的socket模块,只是它作了处理基于l ...

  9. 菜鸟Vue学习笔记(二)

    上一篇文章跟大家分享了Vue笔记上半部分,这篇文章接着跟大家分享.最近学习Vue越来越顺利了,今天接着学习,接着记录. 首先,来学习下常用的v-bind属性,它的作用是在属性中使用vue中定义的变量的 ...

  10. python3中的编码

    python2字符串编码存在的问题: 使用 ASCII 码作为默认编码方式,对中文处理不友好 把字符串分为 unicode 和 str 两种类型,将unicode作为唯一内码,误导开发者 python ...