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

C#使用NPOI實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出功能

 更新時(shí)間:2022年02月21日 11:39:50   作者:惡勢(shì)力-從底層碼農(nóng)開始  
這篇文章主要為大家詳細(xì)介紹了C#使用NPOI實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C#使用NPOI實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出的具體代碼,供大家參考,具體內(nèi)容如下

Excel導(dǎo)入

使用OpenFileDiolog控件和button結(jié)合,選擇文件導(dǎo)入,將路徑顯示在文本框

設(shè)置按鈕點(diǎn)擊事件,將文件路徑賦給textBox.Text

private void Department_SUM_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? OpenFileDialog open = new OpenFileDialog();
? ? ? ? ? ? open.ShowDialog();

? ? ? ? ? ? textBox1.Text = open.FileName;
? ? ? ? }

實(shí)現(xiàn)excel導(dǎo)入,通過textBox1.Text來獲取文件路徑

private void button_Excel_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ??
? ? ? ? ? ? FileStream fs = null;
? ? ? ? ? ? IWorkbook workbook = null;
? ? ? ? ? ? ISheet sheet = null;
? ? ? ? ? ? IRow row = null;
             String txtpath = textBox1.Text;
? ? ? ? ? ??
? ? ? ? ? ? fs = File.OpenRead(txtpath);
? ? ? ? ? ? workbook = new XSSFWorkbook(fs);

? ? ? ? ? ? if (workbook != null)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? sheet = workbook.GetSheetAt(0); //獲取excel表格的第一個(gè)sheet
? ? ? ? ? ? ? ? if (sheet != null)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ?? ?//行的LastRowNum是0~N-1
? ? ? ? ? ? ? ? ?? ?//列的LastCellNum是1~N
? ? ? ? ? ? ? ? ? ? int rowCount = sheet.LastRowNum;

? ? ? ? ? ? ? ? ? ? if (rowCount > 0)
? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? IRow firstrow = sheet.GetRow(0);
? ? ? ? ? ? ? ? ? ? ? ? int cellCount = firstrow.LastCellNum;
? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? ? ? ? for (int i = 0; i <= rowCount - 1; i++)
? ? ? ? ? ? ? ? ? ? ? ? {
//獲取行的第6和第7列數(shù)據(jù),如果cell類型是文本,則通過StringCellValue取值
//如果cell類型是數(shù)值,則通過NumericCellValue來取值
? ? ? ? ? ? ? ? ? ? ? ? ? ? row = sheet.GetRow(i + 1);
? ? ? ? ? ? ? ? ? ? ? ? ? ?row.Cells[5].NumericCellValue;
?? ??? ??? ??? ??? ??? ?row.Cells[6].StringCellValue;
//可以將Cell的數(shù)據(jù)存放在list中,這里假設(shè)將兩列cell的數(shù)據(jù)存入list1,list2
? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? fs.Close();

? ? ? ? ? ? ? ? ? ? }
?? ??? ?//實(shí)際存放DataTable的位置

?? ??? ?//調(diào)用自定義方法,實(shí)現(xiàn)導(dǎo)出
?? ??? ?Add_DataTable_To_Excel(txtpath, table, sheet_name);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }

要實(shí)現(xiàn)excel導(dǎo)出,先將程序中的excel存為DataTable格式
本段代碼存在于上面代碼“//實(shí)際存放DataTable的位置”位置

DataTable table = new DataTable();
? ? ? ? ? ? DataRow dr;

? ? ? ? ? ? table.Columns.Add("列名1", System.Type.GetType("System.String"));
? ? ? ? ? ? table.Columns.Add("列名2", System.Type.GetType("System.Double"));

? ? ? ? ? ? for (int i = 0; i < list4.Count; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? dr = table.NewRow();
? ? ? ? ? ? ? ? dr["列名1"] = list1i];
? ? ? ? ? ? ? ? dr["列名2"] = list2[i].ToString("0.0000"); //將存入的數(shù)據(jù)格式保存為保留四位小數(shù)
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? table.Rows.Add(dr);
? ? ? ? ? ? }

通過方法導(dǎo)出excel,傳參為文件路徑,DataTable,表名
通過獲取要導(dǎo)入數(shù)據(jù)的目標(biāo)excel的內(nèi)容,導(dǎo)入數(shù)據(jù),要將excel導(dǎo)出的方式

public bool Add_DataTable_To_Excel(string output_file_path, DataTable dt, string sheet_name)
? ? ? ? {

FileStream fs = null;
? ? ? ? ? ? IWorkbook workbook = null;

? ? ? ? ? ? ISheet sheet = null;

? ? ? ? ? ? IRow row = null;
XSSFWorkbook xssfworkbook = null;

? ? ? ? ? ? ?fs = new FileStream(output_file_path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

? ? ? ? ? ? xssfworkbook = new XSSFWorkbook(fs);
? ? ? ? ? ? sheet = xssfworkbook.GetSheet(sheet_name);

//設(shè)置馬上要使用的Cell數(shù)據(jù)格式
? ? ? ? ? ? IDataFormat dataformat = xssfworkbook.CreateDataFormat();

? ? ? ? ? ? ICellStyle style0 = xssfworkbook.CreateCellStyle();
? ? ? ? ? ? style0.DataFormat = dataformat.GetFormat("0.0000");

? ? ? ? ? ? ICellStyle style1 = xssfworkbook.CreateCellStyle();
? ? ? ? ? ? style1.DataFormat = dataformat.GetFormat("0.00%");

if (sheet != null)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? int rowCount = sheet.LastRowNum;

? ? ? ? ? ? ? ? if (rowCount > 0)
? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? IRow firstrow = sheet.GetRow(0);
? ? ? ? ? ? ? ? ? ? int cellCount = firstrow.LastCellNum;

for (int i = 0; i <= rowCount - 1; i++)
? ? ? ? ? ? ? ? ? ? {


? ? ? ? ? ? ? ? ? ? ? ? row = sheet.GetRow(i + 1);
? ? ? ? ? ? ? ? ? ? ? ? //表中有行為空,將空的行影響消除
? ? ? ? ? ? ? ? ? ? ? ? if (!"".Equals(row.Cells[code_index].StringCellValue))
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? row = sheet.GetRow(i + 1);

? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int j = 0; j <= dt.Rows.Count - 1; j++)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (row.Cells[code_index].StringCellValue.Equals(dt.Rows[j][0]))
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {


? ?//遍歷將DataTable中的數(shù)據(jù)存入Cell的值 ? row.Cells[1].SetCellValue(Convert.ToDouble(dt.Rows[j][0].ToString()));
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  row.Cells[1].CellStyle = style0;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?row.Cells[2].SetCellValue(Convert.ToDouble(dt.Rows[j][1].ToString()) / Convert.ToDouble(dt.Rows[j][1].ToString()));
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? row.Cells[2].CellStyle = style1;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }


              }

 }

//導(dǎo)出excel
MemoryStream stream = new MemoryStream();
xssfworkbook.Write(stream);

? ?var buf = stream.ToArray();

? ? using (FileStream fss = new FileStream(txtpath, FileMode.Create, FileAccess.Write)) ? ? ? ?//保存為Excel文件
? ? ? ? ? ? {
? ? ? ? ? ? ? ? fss.Write(buf, 0, buf.Length);
? ? ? ? ? ? ? ? fss.Flush();
? ? ? ? ? ? }

? ? ? ? ? ? return true;
}

基礎(chǔ)的Excel文件的導(dǎo)入導(dǎo)出功能到這里全部完成

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#簡(jiǎn)單實(shí)現(xiàn)表達(dá)式目錄樹(Expression)

    C#簡(jiǎn)單實(shí)現(xiàn)表達(dá)式目錄樹(Expression)

    表達(dá)式目錄樹以數(shù)據(jù)形式表示語言級(jí)別代碼。數(shù)據(jù)存儲(chǔ)在樹形結(jié)構(gòu)中。表達(dá)式目錄樹中的每個(gè)節(jié)點(diǎn)都表示一個(gè)表達(dá)式。這篇文章給大家介紹C#簡(jiǎn)單實(shí)現(xiàn)表達(dá)式目錄樹(Expression),需要的朋友參考下吧
    2017-11-11
  • C#9.0主要特性的一些想法

    C#9.0主要特性的一些想法

    這篇文章主要給大家介紹了關(guān)于C#9.0主要特性的一些想法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • C#圖像處理之浮雕效果實(shí)現(xiàn)方法

    C#圖像處理之浮雕效果實(shí)現(xiàn)方法

    這篇文章主要介紹了C#圖像處理之浮雕效果實(shí)現(xiàn)方法,可實(shí)現(xiàn)圖片轉(zhuǎn)換成浮雕效果的功能,需要的朋友可以參考下
    2015-04-04
  • C#獲取上個(gè)月第一天和最后一天日期的方法

    C#獲取上個(gè)月第一天和最后一天日期的方法

    這篇文章主要介紹了C#獲取上個(gè)月第一天和最后一天日期的方法,是關(guān)于C#日期函數(shù)的簡(jiǎn)單應(yīng)用,具有一定的實(shí)用價(jià)值,需要的朋友可以參考下
    2014-11-11
  • C#實(shí)現(xiàn)合并多張圖片為GIF動(dòng)態(tài)圖

    C#實(shí)現(xiàn)合并多張圖片為GIF動(dòng)態(tài)圖

    這篇文章主要為大家詳細(xì)介紹了C#如何將把一張又一張的圖片去拼合成一張GIF動(dòng)態(tài)圖片,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-12-12
  • C#基礎(chǔ)教程之IComparable用法,實(shí)現(xiàn)List<T>.sort()排序

    C#基礎(chǔ)教程之IComparable用法,實(shí)現(xiàn)List<T>.sort()排序

    這篇文章主要介紹了C#的一些基礎(chǔ)知識(shí),主要是IComparable用法,實(shí)現(xiàn)List<T>.sort()排序,非常的實(shí)用,這里推薦給大家。
    2015-02-02
  • C#生成餅形圖及添加文字說明實(shí)例代碼

    C#生成餅形圖及添加文字說明實(shí)例代碼

    這篇文章主要介紹了C#生成餅形圖及添加文字說明的方法,非常實(shí)用的功能,需要的朋友可以參考下
    2014-07-07
  • C#中TextBox的橫線樣式及占位提示詳解

    C#中TextBox的橫線樣式及占位提示詳解

    橫線樣式就是將TextBox以一條底橫線的形式展示在頁面,占位提示就是Web的Placeholder屬性,即在輸入框沒有內(nèi)容的時(shí)候進(jìn)行一個(gè)輸入提示。本文主要介紹了C#中TextBox的這兩個(gè)的實(shí)現(xiàn),需要的可以參考一下
    2022-11-11
  • C# 鍵盤Enter鍵取代Tab鍵實(shí)現(xiàn)代碼

    C# 鍵盤Enter鍵取代Tab鍵實(shí)現(xiàn)代碼

    這篇文章主要介紹了C# 鍵盤Enter鍵取代Tab鍵實(shí)現(xiàn)代碼,有需要的朋友可以參考一下
    2013-11-11
  • C#中事件的繼承實(shí)例分析

    C#中事件的繼承實(shí)例分析

    這篇文章主要介紹了C#中事件的繼承,通過一個(gè)面向?qū)ο蟪绦驅(qū)嵗齺碚f明子類調(diào)用父類事件的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-08-08

最新評(píng)論

乃东县| 山东省| 玛纳斯县| 利辛县| 湖南省| 子洲县| 海阳市| 容城县| 岐山县| 新竹市| 大英县| 伊通| 凤凰县| 宜章县| 冕宁县| 北宁市| 即墨市| 洪江市| 正阳县| 伊川县| 大渡口区| 河西区| 个旧市| 阿坝县| 诸城市| 祁门县| 皮山县| 乌兰察布市| 汽车| 都江堰市| 璧山县| 扶余县| 百色市| 丰县| 梁河县| 榆树市| 昌黎县| 巴林右旗| 鄯善县| 建宁县| 玉林市|