WinForm项目开发中NPOI用法实例解析
在WinForm项目开发过程中,Excel文件的读写是一个常见的需求。NPOI是一个.NET下的开放源代码Excel读写库,可以很好地实现WinForm应用中Excel文件的读取和写入,下面是NPOI用法的实例解析。
步骤1:引用NPOI库
NPOI库可以从NuGet上引用或者在官网上下载后手动添加。如果使用NuGet引用,需要在NuGet Manager中搜索NPOI并安装;如果手动添加,在项目中添加对NPOI的引用即可。
步骤2:读取Excel文件
using System.IO;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;
// 读取Excel文件中的数据,并返回List<List<Obj>>格式的结果
public static List<List<Object>> ReadExcel(string path)
{
List<List<Object>> result = new List<List<Object>>();
IWorkbook workbook;
using (FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
workbook = new XSSFWorkbook(stream); // 读取xlsx文件
}
ISheet sheet = workbook.GetSheetAt(0); // 读取第一个sheet
int rowNum = sheet.LastRowNum + 1; // 总行数
for (int i = 0; i < rowNum; i++)
{
IRow row = sheet.GetRow(i);
List<Object> rowObj = new List<Object>();
for (int j = 0; j < row.LastCellNum; j++)
{
ICell cell = row.GetCell(j);
rowObj.Add(cell.ToString());
}
result.Add(rowObj);
}
return result;
}
上述代码将一个Excel文件读取后转换为一个List>格式的结果,每一个子列表代表一行数据,包含多个列的数据项。
步骤3:写入Excel文件
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
// 将数据写入到Excel文件中
public static void WriteExcel(string path,List<List<Object>> datas)
{
IWorkbook workbook = new XSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1"); // 创建一个Sheet
for(int i=0;i<datas.Count;i++) // 循环行
{
IRow row = sheet.CreateRow(i); // 创建行对象
List<Object> rowData = datas[i];
for(int j=0;j<rowData.Count;j++) // 循环列
{
ICell cell = row.CreateCell(j); // 创建列对象
object cellData = rowData[j]; // 获取数据
if(cellData is string) // 如果是字符串,直接填充
{
cell.SetCellValue(cellData.ToString());
}
else if(cellData is double) // 如果是数字,填充数字
{
cell.SetCellValue((double)cellData);
}
// 更多类型可按需扩展
}
}
using(FileStream stream = new FileStream(path,FileMode.Create,FileAccess.Write))
{
workbook.Write(stream); // 将workbook的数据写入到文件中
}
}
上述代码将一个List>格式的数据写入到一个Excel文件中,每个子列表代表一行数据,包含多个列的数据项。
示例1:读取Excel文件、显示到DataGridView中
private void button1_Click(object sender, EventArgs e)
{
string path = @"test.xlsx"; // Excel文件路径
List<List<Object>> datas = ExcelHelper.ReadExcel(path);
dataGridView1.DataSource = datas; // 将数据显示到DataGridView中
}
上述代码在点击button1的时候,读取了Excel文件的内容,将结果展示到了DataGridView控件中。
示例2:写入Excel文件、使用Process.Start打开
private void button2_Click(object sender, EventArgs e)
{
List<List<Object>> datas = new List<List<Object>>(); // 待写入的数据
for(int i=0;i<10;i++)
{
List<Object> rowData = new List<Object>();
for(int j=0;j<10;j++)
{
rowData.Add(i*j);
}
datas.Add(rowData);
}
string path = @"test2.xlsx"; // Excel文件保存路径
ExcelHelper.WriteExcel(path, datas); // 写入Excel文件
System.Diagnostics.Process.Start(path); // 打开Excel
}
上述代码创建了一个10行10列的二维数据,将数据写入Excel文件中,然后使用Process.Start打开文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:WinForm项目开发中NPOI用法实例解析 - Python技术站