NPOI操作Excel
通过NPOI操作excel,包括将dataset中的数据保存到Excel,从Excel中读取数据到dataset中,其中Excel的格式是2003格式,一下是具体代码:

public sealed class Excel { /// <summary> /// 导出数据到Excel /// </summary> /// <param name="dsExportData"></param> /// <param name="fileName"></param> /// <returns></returns> public static bool ExportDataSetToExcel(DataSet dsExportData, string fileName) { try { if (dsExportData == null || dsExportData.Tables.Count == 0) return false; HSSFWorkbook hssfworkbook = new HSSFWorkbook(); foreach (DataTable dt in dsExportData.Tables) { ISheet sheet = hssfworkbook.CreateSheet(dt.TableName); IRow rowHeader = sheet.CreateRow(0); //添加列名称 for (int i = 0; i < dt.Columns.Count; i++) { rowHeader.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName); sheet.SetColumnWidth(i, 20*256); } sheet.CreateFreezePane(0, 1, 0, 1); //添加具体每列数据 for (int i = 0; i < dt.Rows.Count; i++) { IRow rowData = sheet.CreateRow(i + 1); for (int j = 0; j < dt.Columns.Count; j++) { rowData.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString()); } } } using (FileStream file = new FileStream(fileName, FileMode.Create)) { hssfworkbook.Write(file); } return true; } catch { return false; } } /// <summary> /// 导入Excel文件到dataset /// </summary> /// <param name="fileName"></param> /// <returns></returns> public static DataSet ImportExcelDateToDataSet(string fileName) { try { HSSFWorkbook hssfworkbook = null; using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { hssfworkbook = new HSSFWorkbook(file); } int sheetCount = hssfworkbook.NumberOfSheets; if (sheetCount == 0) return null; DataSet dsDataSet = new DataSet(); for (int i = 0; i < sheetCount; i++) { ISheet sheet = hssfworkbook.GetSheetAt(i); //表头 var rowHeader = sheet.GetRow(0); if (rowHeader == null || rowHeader.Cells == null || rowHeader.Cells.Count == 0) continue; DataTable dt = new DataTable(sheet.SheetName); for (int j = 0; j < rowHeader.LastCellNum; j++) { dt.Columns.Add(rowHeader.Cells[j].StringCellValue); } var rows = sheet.GetRowEnumerator(); rows.MoveNext(); while (rows.MoveNext()) { IRow row = (HSSFRow)rows.Current; DataRow dr = dt.NewRow(); for (int j = 0; j < row.LastCellNum; j++) { ICell cell = row.GetCell(j); if (cell == null) { dr[j] = null; } else { dr[j] = cell.ToString(); } } dt.Rows.Add(dr); } dsDataSet.Tables.Add(dt); } return dsDataSet; } catch { return null; } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)