C#使用NPOI實現Excel讀取數據以及保存數據
背景
好久沒使用C#操作過Excel等文件,剛好今天有位大學同學問到博主。
他有100多個excel表格文件,需要提取每個文件的第二行數據統一保存到一張表里。
后面又需要把所有文件的excel數據全部放到同一個張表,NPOI插件是插件首選。
讀取并保存
創(chuàng)建一個新的工作簿,定義表頭,創(chuàng)建表頭行。
讀取某個文件夾目錄,遍歷所有文件夾下的所有excel文件,并讀取行數據,遍歷每個列的行數據,追加到新的工作簿行里,最后進行保存輸出到本地。
// 讀取xlsx private void ReadExcelFiles(string folderPath) { if (!Directory.Exists(folderPath)) { MessageBox.Show("指定的文件夾路徑不存在"); return; } // ===創(chuàng)建一個新的工作簿=== IWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet("Sheet1"); // 定義表頭 string[] headers = { "字段1", "字段2", "字段3", "字段4", "字段5" }; // 創(chuàng)建表頭行 IRow headerRow = sheet.CreateRow(0); for (int i = 0; i < headers.Length; i++) { headerRow.CreateCell(i).SetCellValue(headers[i]); } // ===創(chuàng)建一個新的工作簿=== int rowIndex = 1; var files = Directory.GetFiles(folderPath, "*.xlsx"); foreach (var file in files) { try { if (!File.Exists(file)) { MessageBox.Show($"文件 {file} 不存在"); continue; } using (var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read)) { IWorkbook workbook2 = new XSSFWorkbook(fileStream); ISheet sheet2 = workbook2.GetSheetAt(0); // 獲取第一個工作表 // 獲取行數 int rowCount = sheet2.PhysicalNumberOfRows; for (int rr = 0; rr < rowCount; rr++) { IRow row = sheet2.GetRow(rr + 1); // 獲取第二行 if (row != null) { var rowValues = row.Cells.Select(cell => cell.ToString()).ToArray(); IRow dataRow = sheet.CreateRow(rowIndex); for (int i = 0; i < rowValues.Length; i++) { dataRow.CreateCell(i).SetCellValue(rowValues[i]); } } rowIndex++; } } } catch (Exception ex) { MessageBox.Show($"讀取文件 {Path.GetFileName(file)} 時發(fā)生錯誤: {ex.Message}"); } } // ===保存文件=== string filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "alldata.xlsx"); using (var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { workbook.Write(fs); } // ===/保存文件=== }
NPOI信息
NPOI 是一個用于處理 Microsoft Office 文件的開源庫,它提供了對 Excel、Word 和 PowerPoint 文件的讀寫功能。
NPOI 支持處理 .xls 和 .xlsx 格式的 Excel 文件,.doc 和 .docx 格式的 Word 文件,.ppt 和 .pptx 格式的 PowerPoint 文件。
以下是 NPOI 的基本功能和插件介紹:
NPOI 插件介紹
1.NPOI: 核心庫,用于讀取和寫入 Office 文件的基本操作。它包含處理 Excel、Word 和 PowerPoint 文件的功能。
2.NPOI.OOXML: 支持 .xlsx 格式的 Excel 文件(即 Office 2007 及以后版本)。這是 NPOI 的一個擴展庫,提供對 Excel 2007 及以后版本格式的支持。
3.NPOI.OpenXml4Net: 支持 .docx 和 .pptx 格式的文件(即 Office 2007 及以后版本)。它用于處理 Open XML 格式的文件。
4.NPOI.HSSF: 支持 .xls 格式的 Excel 文件(即 Office 97-2003 版本)。用于讀取和寫入舊版本的 Excel 文件。
5.NPOI.SS.UserModel: 提供了處理 Excel 文件的通用接口,包括 IWorkbook、ISheet 和 IRow 等接口,適用于各種格式的 Excel 文件。
基本功能
1.Excel 文件操作
讀取 Excel 文件: 通過 NPOI 讀取 .xls 和 .xlsx 文件的數據,包括單元格內容、行和列的索引等。
寫入 Excel 文件: 可以創(chuàng)建新的 Excel 文件或修改現有文件,包括設置單元格的格式、字體、顏色等。
數據操作: 讀取和寫入單元格內容,操作行和列,插入和刪除行列,合并單元格等。
樣式和格式: 設置單元格的樣式,包括字體、顏色、邊框、對齊方式等。
2.Word 文件操作
讀取 Word 文件: 獲取 .doc 和 .docx 文件中的文本、表格、段落等。
寫入 Word 文件: 創(chuàng)建新的 Word 文檔或修改現有文檔,包括添加文本、表格、圖片等。
格式設置: 設置段落格式、字體樣式、字體大小、文本顏色等。
3.PowerPoint 文件操作
讀取 PowerPoint 文件: 提取 .ppt 和 .pptx 文件中的幻燈片內容、文本、圖片等。
寫入 PowerPoint 文件: 創(chuàng)建新的 PowerPoint 演示文稿或修改現有的演示文稿,包括添加幻燈片、設置幻燈片的內容和樣式等。
示例代碼
讀取 Excel 文件的示例
using System; using System.IO; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; // 對于 .xlsx 格式 // using NPOI.HSSF.UserModel; // 對于 .xls 格式 class Program { static void Main() { string filePath = "your_file_path.xlsx"; using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { IWorkbook workbook = new XSSFWorkbook(fileStream); // 對于 .xlsx 文件 ISheet sheet = workbook.GetSheetAt(0); foreach (IRow row in sheet) { foreach (ICell cell in row) { Console.Write($"{cell.ToString()} "); } Console.WriteLine(); } } } }
寫入 Excel 文件的示例
using System; using System.IO; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; // 對于 .xlsx 格式 // using NPOI.HSSF.UserModel; // 對于 .xls 格式 class Program { static void Main() { string filePath = "your_file_path.xlsx"; IWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet("Sheet1"); IRow row = sheet.CreateRow(0); ICell cell = row.CreateCell(0); cell.SetCellValue("Hello, NPOI!"); using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { workbook.Write(fileStream); } } }
這些示例展示了如何使用 NPOI 進行基本的文件讀寫操作。如果你需要更詳細的文檔或具體功能的實現,可以參考 NPOI 的 官方文檔 或其 GitHub 頁面。
以上就是C#使用NPOI實現Excel讀取數據以及保存數據的詳細內容,更多關于C# Excel數據讀取與保存的資料請關注腳本之家其它相關文章!
相關文章
C#中IEnumerator<T>和IEnumerable的區(qū)別
在C#中,IEnumerator<T>和IEnumerable是用于實現迭代的接口,本文主要介紹了C#中IEnumerator<T>和IEnumerable的區(qū)別,具有一定的參考價值,感興趣的可以了解一下2024-01-01C# Dynamic之:ExpandoObject,DynamicObject,DynamicMetaOb的應用(上)
本篇文章對C#中ExpandoObject,DynamicObject,DynamicMetaOb的應用進行了詳細的分析介紹,需要的朋友參考下2013-05-05