使用工具==VS2022,NPOI库
引用部分:dll库的引用(NPOI.dll,ICSharpCode.SharpZipLib.dll)
命名空间的引用(using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;)
注意:本人使用的NPOI库是2.1版本的,NPOI.dll的复制本地一定要选 true,
读取的函数只能读取.xls的文件,写入的不受影响
主要包含2个函数,写入与读取(亲测有效)
// 函数创建表格
public static void CreatExcel(string path)//path路径及文件名
{
IWorkbook wk = new HSSFWorkbook();//实例化 表格类
ISheet shet = wk.CreateSheet("表1");//创建 表及表名
IRow row = shet.CreateRow(5);//行数 从0开始
ICell cel = row.CreateCell(5);//单元格数 从0开始
cel.SetCellValue(233);//表示 添加 233 到5行的第5个单元格
//读写数据一定要用using语句,不然容易报错
using (FileStream fs = File.Open(path, FileMode.OpenOrCreate))
{
wk.Write(fs);//添加内容
}
}//创建表格
//函数读取表格
public static void ReadExcel(int numSheet, string path)//numSheet指要获取的具体的表,path路径
{
IWorkbook wk = null;//先实例化一个空类,后面根据文件的扩展名来创建实际的类
string extension = Path.GetExtension(path);//函数 获取文件的扩展名
//一定要使用 using打开文件流
using (FileStream fs = File.OpenRead(path))
{
//扩展名是支持的文件
if (extension.Equals(".xls"))
{
//就创建 .xls文件类
wk = new HSSFWorkbook(fs);
}
//扩展名不是支持的文件
else
{
Console.WriteLine("本程序只能读取.xls的表格文件");
return;
}
}
//获得当前表
ISheet sheet = wk.GetSheetAt(numSheet);//0表示第一个表
//获得 表中从0开始的所有行
IRow row = sheet.GetRow(0);
//使用循环来遍历数据
for (int i = 0; i <= sheet.LastRowNum; i++) //LastRowNum 是当前表的总行数-1(注意)
{
row = sheet.GetRow(i); //获得表中的所有行
if (row != null)
{
//LastCellNum 是当前行的总列数
for (int j = 0; j < row.LastCellNum; j++)
{
//读取数据
string value = row.GetCell(j).ToString();
Console.Write(value + ",");
}
Console.WriteLine("\n");
}
}
}//读取表格
读取的效果