亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

.NET利用C#字節(jié)流動態(tài)操作Excel文件

 更新時間:2024年12月28日 08:47:58   作者:Eiceblue  
在.NET開發(fā)中,通過字節(jié)流動態(tài)操作Excel文件提供了一種高效且靈活的方式處理數(shù)據(jù),本文將演示如何在.NET平臺使用C#通過字節(jié)流創(chuàng)建,讀取,編輯及保存Excel文件,需要的可以參考下

在.NET開發(fā)中,通過字節(jié)流動態(tài)操作Excel文件提供了一種高效且靈活的方式處理數(shù)據(jù)。這種方法允許開發(fā)者直接在內(nèi)存中創(chuàng)建、修改和保存Excel文檔,無需依賴直接的文件儲存、讀取操作,從而提高了程序的性能和安全性。使用流技術(shù)處理Excel不僅簡化了數(shù)據(jù)操作流程,還支持更簡便的并發(fā)處理和臨時數(shù)據(jù)管理,使應(yīng)用程序能夠更好地適應(yīng)各種數(shù)據(jù)處理需求。本文將演示如何在.NET平臺使用C#通過字節(jié)流創(chuàng)建、讀取、編輯及保存Excel文件。

本文所使用的方法需要用到免費的Free Spire.XLS for .NET,NuGet:Install-Package FreeSpire.XLS

用C#創(chuàng)建并保存Excel工作簿為字節(jié)流

我們可以通過創(chuàng)建Workbook實例直接創(chuàng)建Excel工作簿,然后在其中添加數(shù)據(jù)及設(shè)置格式,最后使用Workbook.SaveToStream()方法將其保存為字節(jié)流。注意新建的Excel工作簿包含三個默認(rèn)的工作表。以下是操作步驟示例:

創(chuàng)建Workbook實例。

通過Workbook.Worksheets[]屬性訪問工作簿。

定義或讀取用于制作表格數(shù)據(jù),如使用DataTable創(chuàng)建一個數(shù)據(jù)表。

使用Workbook.InsertDataTable()插入數(shù)據(jù)到工作表中,或通過Worksheet.Range[].Value屬性直接為單元格添加數(shù)據(jù)。

通過CellRange.Style中的屬性為單元格設(shè)置格式。

使用Worksheet.AutoFitColumn()方法自動調(diào)整列寬。

使用Workbook.SaveToStream()方法將Excel工作簿保存到新建的字節(jié)流或已有的字節(jié)流。

代碼示例

using Spire.Xls;
using System.Data;
using System.Drawing;

namespace CreateExcelStream
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建一個新的工作簿實例
            Workbook workbook = new Workbook();

            // 獲取工作簿中的第一個工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 創(chuàng)建并填充一個包含示例數(shù)據(jù)的 DataTable
            DataTable table = new DataTable("員工信息");
            table.Columns.Add("ID", typeof(int));
            table.Columns.Add("姓名", typeof(string));
            table.Columns.Add("性別", typeof(string));
            table.Columns.Add("職位", typeof(string));
            table.Columns.Add("部門", typeof(string));
            table.Columns.Add("工資", typeof(decimal));
            table.Columns.Add("入職日期", typeof(DateTime));
            table.Rows.Add(1, "張偉", "男", "軟件工程師", "研發(fā)部", 75000, DateTime.Parse("2020-03-15"));
            table.Rows.Add(2, "李娜", "女", "項目經(jīng)理", "項目管理辦公室", 85000, DateTime.Parse("2019-06-22"));
            table.Rows.Add(3, "王芳", "女", "用戶體驗設(shè)計師", "設(shè)計部", 70000, DateTime.Parse("2021-04-05"));
            table.Rows.Add(4, "趙強(qiáng)", "男", "系統(tǒng)分析師", "信息技術(shù)部", 80000, DateTime.Parse("2018-07-11"));
            table.Rows.Add(5, "孫麗", "女", "市場營銷專員", "市場部", 60000, DateTime.Parse("2022-01-03"));
            table.Rows.Add(6, "周勇", "男", "銷售代表", "銷售部", 65000, DateTime.Parse("2020-09-10"));
            table.Rows.Add(7, "吳敏", "女", "財務(wù)會計", "財務(wù)部", 72000, DateTime.Parse("2017-11-28"));
            table.Rows.Add(8, "鄭濤", "男", "人力資源經(jīng)理", "人力資源部", 82000, DateTime.Parse("2016-05-18"));
            table.Rows.Add(9, "馮靜", "女", "法律顧問", "法務(wù)部", 90000, DateTime.Parse("2015-02-14"));
            table.Rows.Add(10, "陳浩", "男", "首席執(zhí)行官", "高層管理", 120000, DateTime.Parse("2014-08-01"));

            // 將 DataTable 中的數(shù)據(jù)插入到工作表中
            sheet.InsertDataTable(table, true, 1, 1);

            // 格式化工作表
            // 設(shè)置表頭行的樣式
            sheet.Rows[0].Style.Color = Color.FromArgb(229, 243, 251);
            sheet.Rows[0].Style.Font.FontName = "宋體";
            sheet.Rows[0].Style.Font.Size = 14f;
            sheet.Rows[0].BorderAround(); // 給表頭行添加外邊框
            sheet.Rows[0].Borders.Color = Color.FromArgb(180, 180, 180); // 設(shè)置邊框顏色

            // 設(shè)置數(shù)據(jù)行的樣式
            for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
            {
                sheet.Rows[i].Style.Color = Color.FromArgb(247, 252, 255);
                sheet.Rows[i].Style.Font.FontName = "宋體";
                sheet.Rows[i].Style.Font.Size = 12f;
                // 更改偶數(shù)行背景色
                if ((i + 1) %2 == 0)
                {
                    sheet.Rows[i].Style.Color = Color.FromArgb(255, 255, 255);
                }
            }
            sheet.Range[2, 1, sheet.Rows.Count(), sheet.Columns.Count()].BorderInside(); // 添加數(shù)據(jù)行單元格內(nèi)邊框
            sheet.Range[2, 1, sheet.Rows.Count(), sheet.Columns.Count()].Borders.Color = Color.FromArgb(220, 220, 220); // 設(shè)置邊框顏色

            // 調(diào)整列寬以適應(yīng)內(nèi)容
            for (int j = 1; j <= sheet.AllocatedRange.Columns.Count(); j++)
            {
                sheet.AutoFitColumn(j);
            }

            // 將工作簿保存到內(nèi)存流
            MemoryStream stream = new MemoryStream();
            workbook.SaveToStream(stream, FileFormat.Version2016);

            // 將流內(nèi)容寫入到文件
            File.WriteAllBytes("output/通過流創(chuàng)建Excel文件.xlsx", stream.ToArray());

            // 釋放資源
            workbook.Dispose();
        }
    }
}

結(jié)果

用C#通過字節(jié)流直接讀取Excel文件數(shù)據(jù)

我們可以使用Workbook.LoadFromStream()將Excel文件流載入到Workbook實例,然后使用Workbook.Worksheets[]屬性訪問工作表以及Worksheet.Range[].Value屬性訪問單元格數(shù)據(jù),從而直接讀取其數(shù)據(jù)用于進(jìn)行進(jìn)一步操作。以下是操作步驟示例:

創(chuàng)建Workbook實例。

使用Workbook.LoadFromStream()方法從新建的字節(jié)流或已有的字節(jié)流載入Excel工作簿。

通過Workbook.Worksheets[]屬性訪問指定工作表。

遍歷工作表已使用的單元格范圍的行和列,通過Worksheet.Range[].Value屬性獲取單元格數(shù)據(jù)。

輸出獲取到的數(shù)據(jù),或?qū)?shù)據(jù)用于其他操作。

代碼示例

using Spire.Xls;

namespace LoadExcelStream
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建一個 Workbook 類的實例
            Workbook workbook = new Workbook();

            // 創(chuàng)建一個內(nèi)存流
            MemoryStream stream = new MemoryStream();
            File.OpenRead("output/通過流創(chuàng)建Excel文件.xlsx").CopyTo(stream);

            // 從內(nèi)存流加載 Excel 文件
            workbook.LoadFromStream(stream);

            // 獲取工作簿中的第一個工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 初始化一個列表,用于存儲從工作表中提取的數(shù)據(jù)
            List<List<string>> data = new List<List<string>>();
            for (int i = 0; i < sheet.AllocatedRange.Rows.Count(); i++)
            {
                // 創(chuàng)建一個列表來存儲每行數(shù)據(jù)
                List<string> lines = new List<string>();
                for (int j = 0; j < sheet.AllocatedRange.Columns.Count(); j++)
                {
                    // 獲取單元格的值并添加到當(dāng)前行的列表中
                    lines.Add(sheet.AllocatedRange[i + 1, j + 1].Value);
                }
                // 將當(dāng)前行的數(shù)據(jù)添加到數(shù)據(jù)列表中
                data.Add(lines);
            }

            // 打印提取的數(shù)據(jù),或?qū)⑵溆糜诤罄m(xù)操作
            foreach (List<string> lines in data)
            {
                Console.WriteLine(string.Join(" | ", lines));
            }
        }
    }
}

結(jié)果

用C#通過字節(jié)流編輯Excel工作簿

通過使用Workbook的LoadFromStream方法,我們可以從字節(jié)流載入Excel工作簿,然后再使用庫中的其他方法和屬性對工作簿內(nèi)容進(jìn)行編輯。在完成編輯后,再使用SaveToStream方法將工作簿保存回字節(jié)流,就可以實現(xiàn)只通過字節(jié)流對Excel文件進(jìn)行編輯操作。以下是操作步驟示例:

創(chuàng)建Workbook實例。

使用Workbook.LoadFromStream()方法從新建的字節(jié)流或已有的字節(jié)流載入Excel工作簿。

通過Workbook.Worksheets[]屬性訪問指定工作表。

通過CellRange的Style、Value等屬性對單元格或單元格范圍進(jìn)行編輯。

使用使用Workbook.SaveToStream()方法將Excel工作簿保存回字節(jié)流。

釋放資源。

代碼示例

using Spire.Xls;
using System.Drawing;

namespace ModifyExcelStream
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 Workbook 類的一個新實例
            Workbook workbook = new Workbook();

            // 創(chuàng)建一個內(nèi)存流
            MemoryStream stream = new MemoryStream();
            File.OpenRead("output/通過流創(chuàng)建Excel文件.xlsx").CopyTo(stream);

            // 從內(nèi)存流加載 Excel 文件
            workbook.LoadFromStream(stream);

            // 獲取工作簿中的第一個工作表
            Worksheet sheet = workbook.Worksheets[0];

            // 修改表頭行的樣式
            CellRange headerRow = sheet.AllocatedRange.Rows[0];
            headerRow.Style.Font.FontName = "黑體";
            headerRow.Style.Font.Size = 12f;
            headerRow.Style.Color = Color.FromArgb(108, 91, 123);
            headerRow.Borders.Color = Color.FromArgb(255, 255, 255);

            // 修改數(shù)據(jù)行的樣式
            for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
            {
                CellRange dataRow = sheet.AllocatedRange.Rows[i];
                dataRow.Style.Font.FontName = "黑體";
                dataRow.Style.Font.Size = 10f;
                dataRow.Style.Color = Color.FromArgb(255, 204, 128);
                dataRow.Borders.Color = Color.FromArgb(158, 158, 158);
                // 更改著色(偶數(shù)行)
                if (i % 2 == 0)
                {
                    dataRow.Style.Color = Color.FromArgb(129, 222, 227);
                }
            }

            // 自動調(diào)整列寬以適應(yīng)內(nèi)容
            for (int k = 1; k <= sheet.AllocatedRange.Columns.Count(); k++)
            {
                sheet.AutoFitColumn(k);
            }

            // 修改邊框顏色
            sheet.AllocatedRange.Style.Borders.Color = Color.White;

            // 將修改后的工作簿保存回內(nèi)存流
            workbook.SaveToStream(stream);

            // 將流內(nèi)容寫入到一個新文件
            File.WriteAllBytes("output/通過流修改Excel文件.xlsx", stream.ToArray());

            // 釋放資源
            workbook.Dispose();
        }
    }
}

結(jié)果

到此這篇關(guān)于.NET利用C#字節(jié)流動態(tài)操作Excel文件的文章就介紹到這了,更多相關(guān)C#字節(jié)流動態(tài)操作Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#?TaskScheduler任務(wù)調(diào)度器的實現(xiàn)

    C#?TaskScheduler任務(wù)調(diào)度器的實現(xiàn)

    本文主要介紹了C#?TaskScheduler任務(wù)調(diào)度器的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2023-05-05
  • c#對象反序列化與對象序列化示例詳解

    c#對象反序列化與對象序列化示例詳解

    這篇文章主要介紹了c#對象反序列化與對象序列化示例,需要的朋友可以參考下
    2014-03-03
  • Winform控件優(yōu)化之圓角按鈕2

    Winform控件優(yōu)化之圓角按鈕2

    這篇文章主要介紹了Winform控件優(yōu)化之圓角按鈕2,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-08-08
  • C#編程實現(xiàn)簡易圖片瀏覽器的方法

    C#編程實現(xiàn)簡易圖片瀏覽器的方法

    這篇文章主要介紹了C#編程實現(xiàn)簡易圖片瀏覽器的方法,涉及C#基于WinForm操作圖片實現(xiàn)預(yù)覽功能的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • C#編程自學(xué)之流程控制語句

    C#編程自學(xué)之流程控制語句

    本文主要介紹流程控制語句,主要包括條件控制語句和循環(huán)控制語句的使用。讀者學(xué)習(xí)本文后,應(yīng)該熟練掌握C#控制語句的主要用途和使用方法,了解這些控制語句的區(qū)別。
    2015-10-10
  • 簡述C#枚舉高級戰(zhàn)術(shù)

    簡述C#枚舉高級戰(zhàn)術(shù)

    這篇文章主要介紹了簡述C#枚舉高級戰(zhàn)術(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • C#使用NPOI導(dǎo)出Excel類封裝

    C#使用NPOI導(dǎo)出Excel類封裝

    這篇文章主要為大家詳細(xì)介紹了C#使用NPOI導(dǎo)出Excel類封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 使用C#的正則表達(dá)式驗證中文字符(實例代碼)

    使用C#的正則表達(dá)式驗證中文字符(實例代碼)

    本文通過實例代碼給大家介紹了使用C#的正則表達(dá)式驗證中文字符的方法,需要的的朋友參考下吧
    2017-07-07
  • Unity?UGUI的Text文本組件使用示例

    Unity?UGUI的Text文本組件使用示例

    這篇文章主要為大家介紹了Unity?UGUI的Text文本組件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • C#中使用angular的方法步驟

    C#中使用angular的方法步驟

    在本篇內(nèi)容里我們給大家整理了關(guān)于C#中使用angular的方法以及具體步驟內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2019-06-06

最新評論