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

创建的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++)
{
//得到当前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 (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 (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");               

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



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

             图一    

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

同时,不知道写得好不好,主要是自己的整理方便以后看,同时也希望对需要的朋友有所帮助。
上面的代码拷贝下来就可以直接用,我是程序中验证过的。代码没问题,如果你们不能用,可能就是库没添加对或其他问题。

												

C#操作Excel表相关推荐

  1. JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls)

    JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls) *** POI的结构: ---*HSSF - 提供读写Microsoft Excel格式档案的功能. ---*XSSF - ...

  2. openpyxl 操作 Excel表的格基本用法

    在本教程中,将Python3和openpyxl库一起使用来操作 Excel 表格. 本文将介绍如下操作: 如何在内存中创建工作簿 如何从工作簿中检索.创建.复制.移动和删除工作表 如何从文件创建工作簿 ...

  3. java excel生成_java操作excel表,包括创建、读取、以及修改【via 度娘】

    作者的网站上对它的特征有如下描述: ● 支持Excel 95-2000的所有版本 ● 生成Excel 2000标准格式 ● 支持字体.数字.日期操作 ● 能够修饰单元格属性 ● 支持图像和图表 应该说 ...

  4. java操作excel表

    文章分类:Java编程 http://developers.sun.com.cn/blog/functionalca/entry/java读写excel简介 JAVA EXCEL API简介 Java ...

  5. Python之如何使用pandas操作Excel表

    目录 1.前言 2.读取Excel 3.对Excel进行操作 3.1.获取行号.列名 3.2.获取单元格的值,并循环输出 3.3.对空值进行处理,替换 3.4.增加一列,并对新增列的第一行进行赋值 3 ...

  6. PB 操作EXCEL表的方法

    1.创建execl对象 eole=CREATEOBJECT("Excel.application")  2.添加新工作簿  eole.Workbooks.add  3.设置第3个工 ...

  7. python pandas操作excel表

    原始excel表 要转换成的excel表 代码 import pandas as pdclass Daletou(object):def __init__(self):# 读取excel表的哪几列se ...

  8. python怎样操作excel表_python操作excel表

    1.新增表并添加数据: 2.给工作表添加表名称,给表数据添加格式: import xlsxwriter datas=(['Rent',1000], ['Gas',100], ['fish','画画'] ...

  9. java jxl包_java利用JXL包操作Excel表

    源码 package test; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; im ...

最新文章

  1. sample,batch和epoch都是啥意思??
  2. JBoss7官方下载最新版本
  3. Netty权威指南之伪异步I/O编程
  4. 造句简单_造句游戏的心理投射:被现代心理学摒弃的网红心理游戏
  5. Android之可伸缩的皮筋效果(贝塞尔曲线)的介绍
  6. java中线程调度遵循的原则_深入理解Java多线程核心知识:跳槽面试必备
  7. android adjust,android adjustresize adjustpan着名的问题
  8. C语言学习笔记---abs()函数和div()函数
  9. {知道力} = {怎么做} + {为什么} 并且 {为什么} {怎么做}
  10. github项目上传与克隆
  11. 软件需求规格说明书_4.软件需求最佳实践笔记 | 软件需求与需求工程
  12. 基于VHDL语言的多人表决器的设计
  13. 【Mark工具】一些好用的图片标注工具
  14. Unity动画系统学习方向
  15. Debug python - Segmentation fault (core dumped)
  16. 视觉SLAM十四讲slambook2/ch3/examples/plotTrajectory.cpp程序报错解决
  17. 【图】图的一般表示法以及其他表示法转化为一般表示法
  18. 制作大白菜装系统U盘以及重装系统
  19. 反调试技巧总结-原理和实现
  20. 【Hive】什么是数据仓库?数据仓库和数据库有什么关系?

热门文章

  1. python实现双色球_python实现双色球随机选号
  2. c语言disp函数_disp 在matlab中是什么意思
  3. Apache Doris数据模型详解及适用场景
  4. 认知电子战 (2.2):基于机器学习的目标状态识别
  5. ModelSim 修改测量时间显示的单位
  6. B站兄弟连Linux视频笔记
  7. Wikibon:云计算2022年及以后的发展趋势
  8. ROS1/2 机器人编程实践汇总 kinetic/melodic/noetic foxy/galactic/humble
  9. 扫雷 洛谷p2327
  10. jsp文字上下居中显示_怎么把jsp的文字居中