欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#使用NPOI實(shí)現(xiàn)Excel讀取數(shù)據(jù)以及保存數(shù)據(jù)

 更新時(shí)間:2025年03月13日 11:20:36   作者:全棧小5  
這篇文章主要為大家詳細(xì)介紹了C#如何使用core版本的NPOI實(shí)現(xiàn)Excel讀取數(shù)據(jù)以及保存數(shù)據(jù)功能,文中的示例代碼講解詳細(xì),感興趣的可以了解一下

背景

好久沒(méi)使用C#操作過(guò)Excel等文件,剛好今天有位大學(xué)同學(xué)問(wèn)到博主。

他有100多個(gè)excel表格文件,需要提取每個(gè)文件的第二行數(shù)據(jù)統(tǒng)一保存到一張表里。

后面又需要把所有文件的excel數(shù)據(jù)全部放到同一個(gè)張表,NPOI插件是插件首選。

讀取并保存

創(chuàng)建一個(gè)新的工作簿,定義表頭,創(chuàng)建表頭行。

讀取某個(gè)文件夾目錄,遍歷所有文件夾下的所有excel文件,并讀取行數(shù)據(jù),遍歷每個(gè)列的行數(shù)據(jù),追加到新的工作簿行里,最后進(jìn)行保存輸出到本地。

// 讀取xlsx
private void ReadExcelFiles(string folderPath)
{
    if (!Directory.Exists(folderPath))
    {
        MessageBox.Show("指定的文件夾路徑不存在");
        return;
    }
    
    // ===創(chuàng)建一個(gè)新的工作簿===
    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)建一個(gè)新的工作簿===


    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); // 獲取第一個(gè)工作表

                // 獲取行數(shù)
                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)} 時(shí)發(fā)生錯(cuò)誤: {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 是一個(gè)用于處理 Microsoft Office 文件的開(kāi)源庫(kù),它提供了對(duì) Excel、Word 和 PowerPoint 文件的讀寫(xiě)功能。

NPOI 支持處理 .xls 和 .xlsx 格式的 Excel 文件,.doc 和 .docx 格式的 Word 文件,.ppt 和 .pptx 格式的 PowerPoint 文件。

以下是 NPOI 的基本功能和插件介紹:

NPOI 插件介紹

1.NPOI: 核心庫(kù),用于讀取和寫(xiě)入 Office 文件的基本操作。它包含處理 Excel、Word 和 PowerPoint 文件的功能。

2.NPOI.OOXML: 支持 .xlsx 格式的 Excel 文件(即 Office 2007 及以后版本)。這是 NPOI 的一個(gè)擴(kuò)展庫(kù),提供對(duì) Excel 2007 及以后版本格式的支持。

3.NPOI.OpenXml4Net: 支持 .docx 和 .pptx 格式的文件(即 Office 2007 及以后版本)。它用于處理 Open XML 格式的文件。

4.NPOI.HSSF: 支持 .xls 格式的 Excel 文件(即 Office 97-2003 版本)。用于讀取和寫(xiě)入舊版本的 Excel 文件。

5.NPOI.SS.UserModel: 提供了處理 Excel 文件的通用接口,包括 IWorkbook、ISheet 和 IRow 等接口,適用于各種格式的 Excel 文件。

基本功能

1.Excel 文件操作

讀取 Excel 文件: 通過(guò) NPOI 讀取 .xls 和 .xlsx 文件的數(shù)據(jù),包括單元格內(nèi)容、行和列的索引等。

寫(xiě)入 Excel 文件: 可以創(chuàng)建新的 Excel 文件或修改現(xiàn)有文件,包括設(shè)置單元格的格式、字體、顏色等。

數(shù)據(jù)操作: 讀取和寫(xiě)入單元格內(nèi)容,操作行和列,插入和刪除行列,合并單元格等。

樣式和格式: 設(shè)置單元格的樣式,包括字體、顏色、邊框、對(duì)齊方式等。

2.Word 文件操作

讀取 Word 文件: 獲取 .doc 和 .docx 文件中的文本、表格、段落等。

寫(xiě)入 Word 文件: 創(chuàng)建新的 Word 文檔或修改現(xiàn)有文檔,包括添加文本、表格、圖片等。

格式設(shè)置: 設(shè)置段落格式、字體樣式、字體大小、文本顏色等。

3.PowerPoint 文件操作

讀取 PowerPoint 文件: 提取 .ppt 和 .pptx 文件中的幻燈片內(nèi)容、文本、圖片等。

寫(xiě)入 PowerPoint 文件: 創(chuàng)建新的 PowerPoint 演示文稿或修改現(xiàn)有的演示文稿,包括添加幻燈片、設(shè)置幻燈片的內(nèi)容和樣式等。

示例代碼

讀取 Excel 文件的示例

using System;
using System.IO;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;  // 對(duì)于 .xlsx 格式
// using NPOI.HSSF.UserModel;  // 對(duì)于 .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);  // 對(duì)于 .xlsx 文件
            ISheet sheet = workbook.GetSheetAt(0);
            foreach (IRow row in sheet)
            {
                foreach (ICell cell in row)
                {
                    Console.Write($"{cell.ToString()} ");
                }
                Console.WriteLine();
            }
        }
    }
}

寫(xiě)入 Excel 文件的示例

using System;
using System.IO;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;  // 對(duì)于 .xlsx 格式
// using NPOI.HSSF.UserModel;  // 對(duì)于 .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 進(jìn)行基本的文件讀寫(xiě)操作。如果你需要更詳細(xì)的文檔或具體功能的實(shí)現(xiàn),可以參考 NPOI 的 官方文檔 或其 GitHub 頁(yè)面。

以上就是C#使用NPOI實(shí)現(xiàn)Excel讀取數(shù)據(jù)以及保存數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于C# Excel數(shù)據(jù)讀取與保存的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#串口連接的讀取和發(fā)送詳解

    C#串口連接的讀取和發(fā)送詳解

    這篇文章主要給大家介紹了關(guān)于C#串口連接的讀取和發(fā)送的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • C#設(shè)計(jì)模式之簡(jiǎn)單工廠模式

    C#設(shè)計(jì)模式之簡(jiǎn)單工廠模式

    這篇文章介紹了C#設(shè)計(jì)模式之簡(jiǎn)單工廠模式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • C#之線程同步Mutex類方式

    C#之線程同步Mutex類方式

    這篇文章主要介紹了C#之線程同步Mutex類方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • C#中IEnumerator<T>和IEnumerable的區(qū)別

    C#中IEnumerator<T>和IEnumerable的區(qū)別

    在C#中,IEnumerator<T>和IEnumerable是用于實(shí)現(xiàn)迭代的接口,本文主要介紹了C#中IEnumerator<T>和IEnumerable的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • C# TSC打印二維碼和條形碼的實(shí)現(xiàn)方法

    C# TSC打印二維碼和條形碼的實(shí)現(xiàn)方法

    下面小編就為大家分享一篇C# TSC打印二維碼和條形碼的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • C# WinForm程序完全退出的問(wèn)題解決

    C# WinForm程序完全退出的問(wèn)題解決

    C# WinForm程序完全退出的問(wèn)題解決,需要的朋友可以參考一下
    2013-05-05
  • 把DLL文件打包進(jìn)EXE的操作技巧

    把DLL文件打包進(jìn)EXE的操作技巧

    用VS2005建立一個(gè)windows項(xiàng)目,取名test,之后把生成DLL文件打包進(jìn)EXE,接下來(lái)介紹詳細(xì)的操作技巧,感興趣的朋友可以了解下啊,或許對(duì)你有所幫助
    2013-02-02
  • C# Dynamic之:ExpandoObject,DynamicObject,DynamicMetaOb的應(yīng)用(上)

    C# Dynamic之:ExpandoObject,DynamicObject,DynamicMetaOb的應(yīng)用(上)

    本篇文章對(duì)C#中ExpandoObject,DynamicObject,DynamicMetaOb的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Unity后處理效果之邊角壓暗

    Unity后處理效果之邊角壓暗

    這篇文章主要為大家詳細(xì)介紹了Unity后處理效果之邊角壓暗,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • c#實(shí)現(xiàn)一元二次方程求解器示例分享

    c#實(shí)現(xiàn)一元二次方程求解器示例分享

    這篇文章主要介紹了c#實(shí)現(xiàn)一元二次方程求解器示例,需要的朋友可以參考下
    2014-03-03

最新評(píng)論