国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C# .NET讀取和寫(xiě)入Excel表數(shù)據(jù)(手把手教)

這篇具有很好參考價(jià)值的文章主要介紹了C# .NET讀取和寫(xiě)入Excel表數(shù)據(jù)(手把手教)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、讀取excel表內(nèi)容

(1)首先在程序:“引用”右鍵--點(diǎn)擊“管理NuGet程序包” (我這里是已經(jīng)引入過(guò)了,所以會(huì)顯示引用中有NPOI)

c讀取excel單元格數(shù)據(jù),excel,c#,.net

?

(2)在“瀏覽”處搜索“NPOI”,選擇適當(dāng)版本安裝(需要聯(lián)網(wǎng))

c讀取excel單元格數(shù)據(jù),excel,c#,.net

?

(3)在程序中引入相應(yīng)的命名空間,編寫(xiě)讀取excel表格的封裝代碼(萬(wàn)能)

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;


#region 讀取Excel數(shù)據(jù)
        /// <summary>
        /// 將excel中的數(shù)據(jù)導(dǎo)入到DataTable中
        /// </summary>
        /// <param name="fileName">文件路徑</param>
        /// <param name="sheetName">excel工作薄sheet的名稱(chēng)</param>
        /// <param name="isFirstRowColumn">第一行是否是DataTable的列名,true是</param>
        /// <returns>返回的DataTable</returns>
        public static DataTable ExcelToDatatable(string fileName, string sheetName, bool isFirstRowColumn)
        {
            ISheet sheet = null;
            DataTable data = new DataTable();
            int startRow = 0;
            FileStream fs;
            IWorkbook workbook = null;
            int cellCount = 0;//列數(shù)
            int rowCount = 0;//行數(shù)
            try
            {
                fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                if (fileName.IndexOf(".xlsx") > 0) // 2007版本
                {
                    workbook = new XSSFWorkbook(fs);
                }
                else if (fileName.IndexOf(".xls") > 0) // 2003版本
                {
                    workbook = new HSSFWorkbook(fs);
                }
                if (sheetName != null)
                {
                    sheet = workbook.GetSheet(sheetName);//根據(jù)給定的sheet名稱(chēng)獲取數(shù)據(jù)
                }
                else
                {
                    //也可以根據(jù)sheet編號(hào)來(lái)獲取數(shù)據(jù)
                    sheet = workbook.GetSheetAt(0);//獲取第幾個(gè)sheet表(此處表示如果沒(méi)有給定sheet名稱(chēng),默認(rèn)是第一個(gè)sheet表)  
                }
                if (sheet != null)
                {
                    IRow firstRow = sheet.GetRow(0);
                    cellCount = firstRow.LastCellNum; //第一行最后一個(gè)cell的編號(hào) 即總的列數(shù)
                    if (isFirstRowColumn)//如果第一行是標(biāo)題行
                    {
                        for (int i = firstRow.FirstCellNum; i < cellCount; ++i)//第一行列數(shù)循環(huán)
                        {
                            DataColumn column = new DataColumn(firstRow.GetCell(i).StringCellValue);//獲取標(biāo)題
                            data.Columns.Add(column);//添加列
                        }
                        startRow = sheet.FirstRowNum + 1;//1(即第二行,第一行0從開(kāi)始)
                    }
                    else
                    {
                        startRow = sheet.FirstRowNum;//0
                    }
                    //最后一行的標(biāo)號(hào)
                    rowCount = sheet.LastRowNum;
                    for (int i = startRow; i <= rowCount; ++i)//循環(huán)遍歷所有行
                    {
                        IRow row = sheet.GetRow(i);//第幾行
                        if (row == null)
                        {
                            continue; //沒(méi)有數(shù)據(jù)的行默認(rèn)是null;
                        }
                        //將excel表每一行的數(shù)據(jù)添加到datatable的行中
                        DataRow dataRow = data.NewRow();
                        for (int j = row.FirstCellNum; j < cellCount; ++j)
                        {
                            if (row.GetCell(j) != null) //同理,沒(méi)有數(shù)據(jù)的單元格都默認(rèn)是null
                            {
                                dataRow[j] = row.GetCell(j).ToString();
                            }
                        }
                        data.Rows.Add(dataRow);
                    }
                }
                return data;
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception: " + ex.Message);
                return null;
            }
        }
        #endregion

(4)調(diào)用上述讀取excel表的方法,讀取數(shù)據(jù)并存取

DataTable dt = ExcelToDatatable(@"C:\Users\Administrator\Desktop\35t敞頂箱(2)\4-11月連續(xù)日期每天需求量.xlsx", "Sheet1", true);
//將excel表格數(shù)據(jù)存入list集合中
//EachdayTX定義的類(lèi),字段值對(duì)應(yīng)excel表中的每一列
List<EachdayTX> eachdayTX = new List<EachdayTX>();
foreach (DataRow dr in dt.Rows)
            {
                EachdayTX model = new EachdayTX
                {
                    Sta=dr[0].ToString()+"站",//excel表中第一列的值,依次類(lèi)推
                    Date=dr[1].ToString(),
                    TXnum=Convert.ToInt32(dr[2])
                };
                eachdayTX.Add(model);
            }
public class EachdayTX
        {
            public string Sta { get; set; }
            public string Date { get; set; }
            public int TXnum { get; set; }
        }            

二、數(shù)據(jù)寫(xiě)入excel表

(1)同樣按照上面讀取excel中的第一步,添加NPOI引用。

(2)添加命名空間,編寫(xiě)將數(shù)據(jù)寫(xiě)入excel表的代碼

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;


//此處是將list集合寫(xiě)入excel表,Supply也是自己定義的類(lèi),每一個(gè)字段對(duì)應(yīng)需要寫(xiě)入excel表的每一列的數(shù)據(jù)
//一次最多能寫(xiě)65535行數(shù)據(jù),超過(guò)需將list集合拆分,分多次寫(xiě)入
 #region 寫(xiě)入excel
        public static bool ListToExcel(List<Supply> list)
        {
            bool result = false;
            IWorkbook workbook = new HSSFWorkbook();
            ISheet sheet = workbook.CreateSheet("Sheet1");//創(chuàng)建一個(gè)名稱(chēng)為Sheet0的表;
            IRow row = sheet.CreateRow(0);//(第一行寫(xiě)標(biāo)題)
            row.CreateCell(0).SetCellValue("標(biāo)題1");//第一列標(biāo)題,以此類(lèi)推
            row.CreateCell(1).SetCellValue("標(biāo)題2");
            row.CreateCell(2).SetCellValue("標(biāo)題3");
            int count = list.Count;//
            int max = 65535;//最大行數(shù)限制
            if (count < max)
            {
//每一行依次寫(xiě)入
                for (int i = 0; i < list.Count; i++)
                {
                    row = sheet.CreateRow(i + 1);//i+1:從第二行開(kāi)始寫(xiě)入(第一行可同理寫(xiě)標(biāo)題),i從第一行寫(xiě)入
                    row.CreateCell(0).SetCellValue(list[i].Value1);//第一列的值
                    row.CreateCell(1).SetCellValue(list[i].Value2);//第二列的值
                    row.CreateCell(2).SetCellValue(list[i].Value3);
                }
//文件寫(xiě)入的位置
                using (FileStream fs = File.OpenWrite(@"C:\Users\20882\Desktop\結(jié)果.xls"))
                {
                    workbook.Write(fs);//向打開(kāi)的這個(gè)xls文件中寫(xiě)入數(shù)據(jù)  
                    result = true;
                }
            }
            else
            {
                Console.WriteLine("超過(guò)行數(shù)限制!");
                result = false;
            }

            return result;

        }
        #endregion

(3)調(diào)用上述寫(xiě)入excel表的代碼,寫(xiě)入數(shù)據(jù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-671039.html

List<Supply> data = new List<Supply>();
//假設(shè)data 已經(jīng)存入了數(shù)據(jù),根據(jù)自己需要添加數(shù)據(jù)
data.Add(new Supply
         {
             Value1 = "1",
             Value2= "haha",
             Value3="111",
         });



bool a = ListToExcel(data);//調(diào)用寫(xiě)入excel的方法,寫(xiě)入數(shù)據(jù)



public class Supply
     {
         public string Value1{ get; set; }
         public string Value2{ get; set; }
         public string Value3{ get; set; }
     }

到了這里,關(guān)于C# .NET讀取和寫(xiě)入Excel表數(shù)據(jù)(手把手教)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 手把手教你從入門(mén)到精通C# Modbus通信

    手把手教你從入門(mén)到精通C# Modbus通信

    在工業(yè)通信領(lǐng)域,Modbus通信是一種使用非常廣泛的通信協(xié)議,Modbus一般有三種,分別為ModbusRTU、ModbusASCII、ModbusTCP,其中ModbusRTU、ModbusASCII是應(yīng)用于串行鏈路上的協(xié)議,通俗一點(diǎn)就是說(shuō)它是走串口的,ModbusTCP通俗點(diǎn)說(shuō)就是它是走網(wǎng)口的,作者在自動(dòng)化領(lǐng)域耕耘多年,做過(guò)的Mo

    2024年02月14日
    瀏覽(106)
  • 手把手教會(huì) VS2022 設(shè)計(jì) Winform 高DPI兼容程序 (net461 net6.0 雙出)

    手把手教會(huì) VS2022 設(shè)計(jì) Winform 高DPI兼容程序 (net461 net6.0 雙出)

    C# Winform高DPI字體模糊. 高DPI下(縮放100%), UI設(shè)計(jì)器一直提示縮放到100%, 如果不重啟到100%,設(shè)計(jì)的控件會(huì)亂飛. 新建.Net Windows窗體應(yīng)用 (Winform)工程 選擇.Net6.0 將窗體尺寸定為 1000 x 1000 , 用于后面檢測(cè)縮放是否正確 添加一個(gè)按鈕 , 尺寸定為 150 x 50 添加一個(gè)圖片框 , 尺寸定為 300 x

    2024年02月07日
    瀏覽(25)
  • C#系列-手把手教你安裝 Visual Studio配置C#開(kāi)發(fā)環(huán)境,創(chuàng)建第一個(gè)C#程序

    C#系列-手把手教你安裝 Visual Studio配置C#開(kāi)發(fā)環(huán)境,創(chuàng)建第一個(gè)C#程序

    下載軟件 點(diǎn)擊此處開(kāi)始下載 安裝依賴(lài) 選擇.NET desktop development 安裝完成,重啟電腦 解決方案1 找到這個(gè)目錄C:ProgramDataMicrosoftVisualStudioPackages 直接搜索VC_redist 找到這個(gè)VC_redist.x64.exe文件,一般會(huì)有兩個(gè),直接全部雙擊安裝 返回VS installer 界面點(diǎn)擊:更多—修復(fù) 解決方

    2024年04月26日
    瀏覽(33)
  • 從0到1手把手教你ASP.NET Core Web API項(xiàng)目配置接口文檔Swagger(一)

    從0到1手把手教你ASP.NET Core Web API項(xiàng)目配置接口文檔Swagger(一)

    1、雙擊打開(kāi)VS2022。 2、單擊“創(chuàng)建新項(xiàng)目”,如下圖。 3、選擇“ASP.NET Core Web API”類(lèi)型,然后單擊“下一步”,如下圖。 4、“項(xiàng)目名稱(chēng)”此處填寫(xiě)為“AllTestDemo”;“位置”此處放在E盤(pán)根目錄;“解決方案名稱(chēng)”此處默認(rèn)與“項(xiàng)目名稱(chēng)”保持一致;不勾選“將解決方案和項(xiàng)

    2023年04月11日
    瀏覽(30)
  • 從0到1手把手教你ASP.NET Core Web API項(xiàng)目配置接口文檔Swagger(二)

    從0到1手把手教你ASP.NET Core Web API項(xiàng)目配置接口文檔Swagger(二)

    傳送門(mén):從0到1手把手教你ASP.NET Core Web API項(xiàng)目配置接口文檔Swagger(一) 我們雖然可以在輸入 /swagger 后順利的訪問(wèn) Swagger UI 頁(yè)面,但是我們發(fā)現(xiàn)每次運(yùn)行項(xiàng)目都會(huì)默認(rèn)訪問(wèn) /weatherforecast 這個(gè)接口,想要將啟動(dòng)頁(yè)設(shè)為 /swagger (或者其他頁(yè)面)就需要用到配置文件 launchSettings.

    2023年04月12日
    瀏覽(34)
  • .net8系列-04圖文并茂手把手教你配置Swagger支持token以及實(shí)現(xiàn)Swagger擴(kuò)展,Swagger代碼單獨(dú)抽離

    .net8系列-04圖文并茂手把手教你配置Swagger支持token以及實(shí)現(xiàn)Swagger擴(kuò)展,Swagger代碼單獨(dú)抽離

    接上篇文章,我們當(dāng)前已完成如下內(nèi)容: 創(chuàng)建應(yīng)用成功 創(chuàng)建接口成功 配置Swagger實(shí)現(xiàn)接口注釋和版本控制 本文章主要內(nèi)容為: 配置Swagger支持token傳值測(cè)試接口 添加如下代碼 文件目錄:xiaojinWebApplicationxiaojinWebApplicationProgram.cs 打開(kāi)接口測(cè)試頁(yè)面 配置Token 觀察頁(yè)面 我們發(fā)現(xiàn)

    2024年04月27日
    瀏覽(21)
  • C#【必備技能篇】使用NPOI實(shí)現(xiàn)對(duì)excel的讀取和寫(xiě)入

    C#【必備技能篇】使用NPOI實(shí)現(xiàn)對(duì)excel的讀取和寫(xiě)入

    依次執(zhí)行下圖中的1-6按鈕 , 可以通過(guò)查看程序文件夾中的excel文件來(lái)加深理解。 鏈接:https://pan.baidu.com/s/19PgQMhCKviw9aBAjmJHSww 提取碼:2omi 需要在源碼中增加如下引用。相應(yīng)的dll已更新到 5 的下載地址中。

    2023年04月13日
    瀏覽(25)
  • 7大最常用ChatGPT Excel最佳使用示例(最后附微軟官方Excel-ChatGPT插件使用方法)——手把手從0開(kāi)始教您如何在Excel中使用ChatGPT,附詳細(xì)指南及教程

    7大最常用ChatGPT Excel最佳使用示例(最后附微軟官方Excel-ChatGPT插件使用方法)——手把手從0開(kāi)始教您如何在Excel中使用ChatGPT,附詳細(xì)指南及教程

    Microsoft Excel已安裝在全球超過(guò)10億臺(tái)計(jì)算機(jī)上。它是地球上最常見(jiàn)的數(shù)據(jù)分析平臺(tái)。Excel也是最成熟的軟件之一,最初的版本于1985年發(fā)布在Macintosh計(jì)算機(jī)上。多年來(lái),它不斷發(fā)展,以保持相關(guān)性。雖然Excel中包含許多高級(jí)和晦澀的功能,可以節(jié)省大量時(shí)間,但許多人并不熟悉它

    2024年02月07日
    瀏覽(26)
  • 數(shù)據(jù)庫(kù):如何安裝SQL,手把手教你

    數(shù)據(jù)庫(kù):如何安裝SQL,手把手教你

    我們只選擇兩個(gè): SQLEXPR_x64_CHS.exe SQLManagementStudio_x64_CHS.exe 如果你是32位系統(tǒng)就選擇x86的(9102年了,應(yīng)該都是64位的了吧)選中后下載到你經(jīng)常保存文件的地方即可(這個(gè)地方并不是sql要安裝的地方)。 全部下載后如圖所示 正式安裝 先安裝SQL,再安裝 SQL Management Studio 雙擊

    2024年01月16日
    瀏覽(162)
  • 手把手教你使用Segformer訓(xùn)練自己的數(shù)據(jù)

    手把手教你使用Segformer訓(xùn)練自己的數(shù)據(jù)

    使用Transformer進(jìn)行語(yǔ)義分割的簡(jiǎn)單高效設(shè)計(jì)。 將 Transformer 與輕量級(jí)多層感知 (MLP) 解碼器相結(jié)合,表現(xiàn)SOTA!性能優(yōu)于SETR、Auto-Deeplab和OCRNet等網(wǎng)絡(luò) 相比于ViT,Swin Transfomer計(jì)算復(fù)雜度大幅度降低,具有輸入圖像大小線(xiàn)性計(jì)算復(fù)雜度。Swin Transformer隨著深度加深,逐漸合并圖像塊來(lái)

    2024年01月20日
    瀏覽(119)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包