最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

創(chuàng)建Workbook實(shí)例。

通過(guò)Workbook.Worksheets[]屬性訪問(wèn)工作簿。

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

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

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

使用Worksheet.AutoFitColumn()方法自動(dòng)調(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)建一個(gè)新的工作簿實(shí)例
            Workbook workbook = new Workbook();

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

            // 創(chuàng)建并填充一個(gè)包含示例數(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, "李娜", "女", "項(xiàng)目經(jīng)理", "項(xiàng)目管理辦公室", 85000, DateTime.Parse("2019-06-22"));
            table.Rows.Add(3, "王芳", "女", "用戶體驗(yàn)設(shè)計(jì)師", "設(shè)計(jì)部", 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, "孫麗", "女", "市場(chǎng)營(yíng)銷專員", "市場(chǎng)部", 60000, DateTime.Parse("2022-01-03"));
            table.Rows.Add(6, "周勇", "男", "銷售代表", "銷售部", 65000, DateTime.Parse("2020-09-10"));
            table.Rows.Add(7, "吳敏", "女", "財(cái)務(wù)會(huì)計(jì)", "財(cái)務(wù)部", 72000, DateTime.Parse("2017-11-28"));
            table.Rows.Add(8, "鄭濤", "男", "人力資源經(jīng)理", "人力資源部", 82000, DateTime.Parse("2016-05-18"));
            table.Rows.Add(9, "馮靜", "女", "法律顧問(wèn)", "法務(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/通過(guò)流創(chuàng)建Excel文件.xlsx", stream.ToArray());

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

結(jié)果

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

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

創(chuàng)建Workbook實(shí)例。

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

通過(guò)Workbook.Worksheets[]屬性訪問(wèn)指定工作表。

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

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

代碼示例

using Spire.Xls;

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

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

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

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

            // 初始化一個(gè)列表,用于存儲(chǔ)從工作表中提取的數(shù)據(jù)
            List<List<string>> data = new List<List<string>>();
            for (int i = 0; i < sheet.AllocatedRange.Rows.Count(); i++)
            {
                // 創(chuàng)建一個(gè)列表來(lái)存儲(chǔ)每行數(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#通過(guò)字節(jié)流編輯Excel工作簿

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

創(chuàng)建Workbook實(shí)例。

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

通過(guò)Workbook.Worksheets[]屬性訪問(wèn)指定工作表。

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

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

釋放資源。

代碼示例

using Spire.Xls;
using System.Drawing;

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

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

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

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

            // 自動(dòng)調(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)容寫入到一個(gè)新文件
            File.WriteAllBytes("output/通過(guò)流修改Excel文件.xlsx", stream.ToArray());

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

結(jié)果

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

相關(guān)文章

  • C# 漢字轉(zhuǎn)化拼音的簡(jiǎn)單實(shí)例代碼

    C# 漢字轉(zhuǎn)化拼音的簡(jiǎn)單實(shí)例代碼

    C# 漢字轉(zhuǎn)化拼音的簡(jiǎn)單實(shí)例代碼,需要的朋友可以參考一下
    2013-04-04
  • 詳解C#方法中使用out參數(shù)做登錄判斷代碼實(shí)例

    詳解C#方法中使用out參數(shù)做登錄判斷代碼實(shí)例

    這篇文章主要介紹了C#使用out參數(shù)做登錄判斷,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • C#自定義控件指示燈效果

    C#自定義控件指示燈效果

    在C#中實(shí)現(xiàn)一個(gè)指示燈控件,可以通過(guò)GDI+技術(shù)繪制,首先使用Pen對(duì)象繪制外環(huán),然后用SolidBrush對(duì)象填充內(nèi)圓,通過(guò)RectangleF定義繪制和填充的邊界,控件的屬性包括顏色、間隙、外環(huán)寬度等,本文給大家介紹C#自定義控件指示燈效果,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • C#關(guān)鍵字async/await用法

    C#關(guān)鍵字async/await用法

    在本篇文章里小編給大家整理的是關(guān)于C#關(guān)鍵字async/await用法及相關(guān)實(shí)例,需要的朋友們學(xué)習(xí)下。
    2019-12-12
  • C#實(shí)現(xiàn)截圖幫助類

    C#實(shí)現(xiàn)截圖幫助類

    這篇文章介紹了C#實(shí)現(xiàn)截圖幫助類的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 向一個(gè)數(shù)組中插入一個(gè)1~100的隨機(jī)數(shù)

    向一個(gè)數(shù)組中插入一個(gè)1~100的隨機(jī)數(shù)

    這篇文章主要介紹了如何向一個(gè)數(shù)組中插入一個(gè)1~100的隨機(jī)數(shù),思路很簡(jiǎn)單,需要的朋友可以參考下
    2014-07-07
  • C#中@字符d是個(gè)什么意思

    C#中@字符d是個(gè)什么意思

    這篇文章主要介紹了C#中@字符d是個(gè)什么意思?具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • C#窗體全屏功能實(shí)例代碼

    C#窗體全屏功能實(shí)例代碼

    簡(jiǎn)要介紹窗體全屏的方法,列出實(shí)現(xiàn)窗體的全屏功能以及全屏功能的快捷鍵的代碼,需要的朋友可以參考下
    2016-11-11
  • C#如何自定義線性節(jié)點(diǎn)鏈表集合

    C#如何自定義線性節(jié)點(diǎn)鏈表集合

    C#如何自定義線性節(jié)點(diǎn)鏈表集合,這篇文章主要為大家詳細(xì)介紹了C#基于泛型的自定義線性節(jié)點(diǎn)鏈表集合示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • C#獲取真實(shí)IP地址實(shí)現(xiàn)方法

    C#獲取真實(shí)IP地址實(shí)現(xiàn)方法

    這篇文章主要介紹了C#獲取真實(shí)IP地址實(shí)現(xiàn)方法,對(duì)比了C#獲取IP地址的常用方法并實(shí)例展示了C#獲取真實(shí)IP地址的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10

最新評(píng)論

托里县| 澄迈县| 天镇县| 民勤县| 肇庆市| 大兴区| 呼伦贝尔市| 噶尔县| 平乐县| 尉氏县| 莱州市| 芜湖县| 扬中市| 龙山县| 恭城| 屏边| 彰化市| 富源县| 建德市| 子洲县| 乡城县| 吉林省| 法库县| 天柱县| 平泉县| 曲水县| 中阳县| 观塘区| 昌乐县| 垣曲县| 广东省| 海门市| 枞阳县| 双流县| 巴青县| 淮北市| 南靖县| 腾冲县| 南郑县| 肇东市| 鄱阳县|