本文主要介绍一下c#来操作excel表格,主要介绍我使用的,我是使用第三方提供的函数库(NPOI)来进行excel的操作,而NPOI库函数在其官网下,我这里就不拿出来了。

1:NPOI库函数

NPOI库函数下载后,解压出来有一下几个DLL文件,我们就是通过这几个DLL库文件中提供的函数来操作



2:介绍一下excel表格

    2.1: excel表格有两种后缀名 .xls 和 .xlsx。.xls是office2007以前版本的excel表的后缀名,而.xlsx是office2007以后的excel

excel表的后缀名。

    2.2:一个excel文件表里有多个工作簿,每一个工作簿中都可以存数据,如下图



3:通过c#来操作excel

     3.1:添加NPOI库并引用命名空间

          

3.2:打开或创建一个excel表,并向里写入数据

创建的2.xls文件和其写入的数据如下图:



3.3:读取excel文件中的数据
//读取excel中的数据//此处我同样是用FileStream类来读取文件,并是用了using,不用再手动释放资源using (FileStream fs = File.OpenRead("1.xls")){IWorkbook workbook = null;//这里需要根据文件名格式判断一下//HSSF只能读取xls的//XSSF只能读取xlsx格式的if (Path.GetExtension(fs.Name) == ".xls"){workbook = new HSSFWorkbook(fs);}else if (Path.GetExtension(fs.Name) == ".xlsx"){workbook = new XSSFWorkbook(fs);}//因为Excel表中可能不止一个工作簿,这里为了演示,我们遍历所有工作簿//同时要注意excel的工作簿的对应关系,其工作簿也是从0开始//工作簿位置为0时,其在excel表的最左边,参考下面图一for (int h = 0; h < workbook.NumberOfSheets; h++){//得到当前sheetISheet sheet = workbook.GetSheetAt(h);IRow row;// //也可以通过GetSheet(name)得到//遍历表中所有的行//注意这里加1,这里得到的最后一个单元格的索引默认是从0开始的for (int i = 0; i < sheet.LastRowNum; i++)  //对工作表每一行  {                       row = sheet.GetRow(i);   //row读入第i行数据  if (row != null)  {  for (int j = 0; j < row.LastCellNum; j++)  //对工作表每一列
{//获取第i行第j列数据  其数据是通过返回string类型的来获取string cellValue = row.GetCell(j).ToString(); //cellValue就是第i行第j列这个单元格中的数据richTextBox1.AppendText(cellValue + " ");}richTextBox1.AppendText("\r\n");}  }  }}//using

//读取excel中的数据 //此处我同样是用FileStream类来读取文件,并是用了using,不用再手动释放资源 using (FileStream fs = File.OpenRead("2.xls")) { IWorkbook workbook = null; //这里需要根据文件名格式判断一下 //HSSF只能读取xls的 //XSSF只能读取xlsx格式的 if (Path.GetExtension(fs.Name) == ".xls") {

workbook = new HSSFWorkbook(fs); } else if (Path.GetExtension(fs.Name) == ".xlsx") { workbook = new XSSFWorkbook(fs); } //因为Excel表中可能不止一个工作簿,这里为了演示,我们遍历所有工作簿 //同时要注意excel的工作簿的对应关系,其工作簿也是从0开始 //工作簿位置为0时,其在excel表的最左边,参考下面图一 for (int h = 0; h < workbook.NumberOfSheets;h++) { //得到当前sheet ISheet sheet = workbook.GetSheetAt(h); IRow row;// //也可以通过GetSheet(name)得到 //遍历表中所有的行 //注意这里加1,这里得到的最后一个单元格的索引默认是从0开始的 for (int i = 0; i < sheet.LastRowNum; i++) //对工作表每一行 { row = sheet.GetRow(i); //row读入第i行数据 if (row != null) { for (intj = 0; j < row.LastCellNum; j++) //对工作表每一列 { //获取第i行第j列数据 其数据是通过返回string类型的来获取 string cellValue = row.GetCell(j).ToString(); //cellValue就是第i行第j列这个单元格中的数据 richTextBox1.AppendText(cellValue + " "); } richTextBox1.AppendText("\r\n");               

其从2.xls中读取出来显示如下:



注:excel中工作簿在excel中的位置



             图一    

这是我自己用c#操作excel的方法,其实还有很多,也没去研究。

同时,不知道写得好不好,主要是自己的整理方便以后看,同时也希望对需要的朋友有所帮助。

上面的代码拷贝下来就可以直接用,我是程序中验证过的。代码没问题,如果你们不能用,可能就是库没添加对或其他问题。

  1. //打开或创建excel文件并向里添加数据
  2. HSSFWorkbook wk = new HSSFWorkbook();//这是用于后缀名是.xls的excel文件的操作
  3. //XSSFWorkbook wk = new XSSFWorkbook(); 这是用于后缀名是.xlsx的excel文件的操作
  4. ISheet isheet = wk.CreateSheet("Sheet1");//这是创建一个工作簿,其名字位 "Sheet1"
  5. IRow row;
  6. ICell cell;
  7. int rowIndex = 0;
  8. int cellIndex = 0;
  9. for (rowIndex = 0; rowIndex < 10; rowIndex++)
  10. {
  11. row = isheet.CreateRow(rowIndex);//这个函数是创建该工作簿的第rowIndex行,并不是创建rowIndex行,从第0行开始
  12. for (cellIndex = 0; cellIndex < 10; cellIndex++)
  13. {
  14. cell = row.CreateCell(cellIndex);//这个函数是创建该工作簿第cellIndex列(即某个单元格),从第0列开始
  15. cell.SetCellValue(1);//这个函数就是向第rowIndex行和第cellIndex列放数据,此处放的是int型的数字1
  16. }
  17. }
  18. //我们excel文件的数据已经添加完了,然后我们就要把数据写入excel中
  19. //这里我们通过FileStream类来完成(此处是文本操作,而文本操作有多重类,这里就不介绍)
  20. //对于文本的操作,需要我们自己手动的释放资源
  21. // FileStream("2.xls", FileMode.OpenOrCreate)中的两个参数的解释,FileStream这里类的构造函数有很多中,不一一介绍,
  22. //"2.xls":这是指定打开或创建的excel文件的路径和excel的名字,路径可以是相对路径,也可以是绝对路径
  23. // 这里我用的是相对路径,相对于该程序的可执行文件,即.exe文件的路径(我这里就是在.exe所在的文件夹中的2.xls表格)
  24. // 如果用的是XSSFWorkbook创建.xlsx的excel文件的话,此处就应该是2.xlsx。
  25. //FileMode.OpenOrCreate:这是指定对2.xls这个excel文件的操作模式,这里是如果该路径下没有2.xls就创建,有就打开
  26. FileStream fs2 = new FileStream("2.xls", FileMode.OpenOrCreate);
  27. wk.Write(fs2);//向打开的这个2.xls文件中写入上面添加的数据
  28. wk.Close();//这就是释放资源 (详细知识请参考其它资料,这里不做解释)
  29. fs2.Close();
  30. fs2.Dispose();
  31. //同时我们也可以不用自己手动释放资源,使用using ,其代码如下
  32. //using (FileStream fs = new FileStream ("2.xls",FileMode.OpenOrCreate))
  33. //{
  34. // wk.Write(fs);//向打开的这个1.xls文件中写入并保存。
  35. //}

http://www.taodudu.cc/news/show-4619297.html

相关文章:

  • 向控件拖放数据,不积硅步无以至千里
  • File常用方法,不积硅步无以至千里
  • ArrayList常用方法,不积硅步无以至千里
  • Directory常用方法,不积硅步无以至千里
  • string常用方法,不积硅步无以至千里
  • HashTable常用方法,不积硅步无以至千里
  • 数据库常用命令,不积硅步无以至千里
  • 常用快捷键,不积硅步无以至千里
  • 【观察】星环科技:七年磨三剑,积硅步至千里
  • Allegro 灵巧手 -硅步机器人
  • 各类网红级产品荟聚,硅步机器人专业ROS交流会,近距离产品体验,快来报名吧
  • ListBox美化重绘,不积硅步无以至千里
  • 以太坊常用命令
  • 直播预告 | 硅步机器人携手Shadow Robot原厂技术大咖 深度解析遥操作系统
  • 同时查询多个快递单号物流最简单实用的方法
  • 鼎盛福分析抖音怎么样做店铺服务获取竞争优势
  • 平均回复在5s内的快捷短语
  • 从程序员的角度看人类通信史
  • b2b2c所有功能整合
  • JAVA面向对象程序设计-FeiGe快递系统-封装
  • JAVA面向对象程序设计-FeiGe快递系统-继承III
  • JAVA面向对象程序设计-FeiGe快递系统-继承II
  • java飞鸽源码_java版本的飞鸽编写(一)
  • C语言最-佳存款方案程序(代码原创)
  • IF选择结构例题(银行利率问题)
  • 定期存款可以提前取出来吗_存的定期可以提前取吗
  • 银行定期存款利率,输入金额,输入年限,计算本息总额
  • 银行存取款练习
  • 整存整取的文档设计[by absolutezero]
  • 银行存款业务 银行软件测试工程师必会

C#操作Excel表格,不积硅步无以至千里相关推荐

  1. 不积硅步 无以至千里

    首先很感谢屏幕前的各位小伙伴观看我的这一篇文章. 自我介绍 我是一位准大一新生,对于计算机有着浓厚的兴趣,但是在高考后我并没有录取到计算机的专业,而是被录取到了离计算机很近的自动化专业,这对于我来说也 ...

  2. SqlServer骚操作,不积硅步无以至千里

    1. 类型转换方法1:Convert(目标类型,待转换的字段,格式) 2. 类型转换方法2:Cast(待转换的字段 as 目标类型) 3. 日期增加:DateAdd(日期的年/月/日...,增加的数值 ...

  3. File常用方法,不积硅步无以至千里

    文件的,创建.复制.剪切.删除 private void button1_Click(object sender, EventArgs e) {try{//创建主测试文件夹Directory.Crea ...

  4. 小技巧,不积硅步无以至千里

    1)如何将a,b两个变量中的内容交换?     解:创建临时变量c,并以c开头,a做中,b做尾,首尾相连即可交换完毕.c=a;a=b;b=c; 2)如何取消字符串中的\转义符的作用,让其原样输出?   ...

  5. Serialized常用方法,不积硅步无以至千里

    1. 将类的上方加上[Serializable],定义为可被序列化的 2. 将不想序列化的字段,上方加上[NonSerialized] 3. 创建文件流:FileStream fileStream=n ...

  6. 不积硅步无以至千里,不积小流无以成江海

    aHR0cHM6Ly93d3cuY25ibG9ncy5jb20vemhhbmdndW9zaGVuZzExMjEvcC8xMTQ0ODE5NC5odG1s 每天进步一点点

  7. ListBox美化重绘,不积硅步无以至千里

    如果要对ListBox控件进行自定义绘制(美化),那么首先必须将ListBox的DrawMode属性设置为OwnerDrawVariable或OwnerDrawFixed.ListBox有个ItemH ...

  8. 常用快捷键,不积硅步无以至千里

    1)全部代码格式整理:Ctrl+K,D  2)所选代码格式整理:Ctrl+K,F  3)智能代码提示:Ctrl+J  4)所选代码注释:Ctrl+K,C  5)所选代码取消注释:Ctrl+K,U  6 ...

  9. 数据库常用命令,不积硅步无以至千里

    1. 查看数据库:Show DataBases; 2. 新建数据库:Create DataBase 库名 characterset 字符集名称 3. 查看数据库信息:Show CreateDataBa ...

最新文章

  1. 华盛顿多家博物馆因美政府停摆“闭门谢客”
  2. Maven : 将Jar安装到本地仓库和Jar上传到私服[转]
  3. so 问题来了,你现在值多少钱?
  4. node 跨域请求设置
  5. root无法运行命令解决办法
  6. 密钥短语密码加密,解密同理。
  7. windows加域后的问题
  8. 微信小程序获取用户的头像和昵称
  9. linux ping不允许的操作,Alpine ping:不允许操作
  10. 自从我不管事后,员工们肯定舒心多了
  11. Java实现基于Cookie的单点登录看这篇文章就够了
  12. CHEMKIN III 学习笔记
  13. 方法论-5W2H七问分析法
  14. 云函数隐藏c2服务器
  15. smali语言程序流程控制语法
  16. GitHub开源神器:教你如何实现 PDF 转 Word
  17. 20230426作业
  18. 阿里云服务器安装tomcat
  19. python 基础知识点 (一)
  20. Detours: 在二进制代码上截获Win32函数调用

热门文章

  1. win下载MinGW并安装详细记载
  2. 程序员的“三大死穴”
  3. 设计求任意两个整数和的web程序,用户通过提交页面(input.jsp)输入两个整数,并提交给一个(sum.jsp)程序
  4. Delphi Xe 下载(破解)
  5. requests wrong version number
  6. 安装Windows操作系统纯净版
  7. Android列表小部件(Widget)开发详解
  8. 机器人蛮王_英雄联盟机器人被重做,变身上单霸主,机器人:蛮王、诺手你过来...
  9. 浅谈大数据及相关技术在计算机专业的应用
  10. aop编程时出现错误信息:java.lang.NoClassDefFoundError