C#使用NPOI导出Excel文件
歡迎您成為我的讀者,希望這篇文章能給你一些幫助。
前言
今天咱們一起來(lái)看看在C#中如何使用NPOI第三方控件進(jìn)行數(shù)據(jù)的導(dǎo)出。
關(guān)于NPOI插件網(wǎng)上資料很多,大家感興趣的可以去看看。
本文使用的版本是NPOI 2.5.1。
大家可在包管理器NuGet或者下面網(wǎng)址進(jìn)行下載。
http://npoi.codeplex.com/ 快速下載地址: //files.cnblogs.com/files/netxiaohui/npoi.2.5.1.zip很多時(shí)候,我們?cè)谶M(jìn)行數(shù)據(jù)導(dǎo)出到Excel文件時(shí),在windows平臺(tái)需要使用到office組件才可以成功導(dǎo)出,也就是說(shuō)電腦很多時(shí)候都必須安裝office才可以。今天分享的這個(gè)組件,可以在目標(biāo)主機(jī)不安裝office的情況下,對(duì)Word或Excel進(jìn)行讀寫(xiě)操作。
NPOI的優(yōu)勢(shì)
開(kāi)源,可以完全免費(fèi)使用
包含大部分EXCEL的特性
支持處理的文件格式包括(xls/xlsx/docx)
同時(shí)支持導(dǎo)入導(dǎo)出
基于.net 2.0/4.0也支持xlsx和docx格式
不需要在服務(wù)器或目標(biāo)主機(jī)安裝office
它不僅對(duì)Excel進(jìn)行操作,可以對(duì)doc,ppt文件進(jìn)行操作
NPOI內(nèi)部構(gòu)成
NPOI是一個(gè)開(kāi)源的C#讀取Excel、Word等微軟OLE2組件文件的項(xiàng)目。
在使用NPOI的過(guò)程中,有一些名稱(chēng)需要提前了解下。
Workbook工作薄 一個(gè)文件包含一個(gè)工作簿,一個(gè)工作簿可以包含若干個(gè)工作表Sheet。
Sheet工作表
HSSFWorkbook用于處理xls文件類(lèi)型的NPOI操作類(lèi),繼承自IWorkbook。
XSSFWorkbook處理xlsx文件類(lèi)型的NPOI操作類(lèi),也繼承自IWorkbook。
操作xlsx文件進(jìn)行數(shù)據(jù)導(dǎo)出工作時(shí),主要有以下幾個(gè)步驟需要注意。
1、聲明XSSFWorkbook實(shí)例。
2、利用聲明并實(shí)例化的工作簿創(chuàng)建其工作表。
3、寫(xiě)入Excel表頭和表數(shù)據(jù)
4、將實(shí)例化的工作簿寫(xiě)入流文件中。
實(shí)際的導(dǎo)出工作就是上面說(shuō)的四步,但是在內(nèi)部需要具體進(jìn)行一些表格樣式、輸出字體樣式的調(diào)整。
具體代碼如下:
using?(FileStream?fs?=?new?FileStream(sfd.FileName,?FileMode.OpenOrCreate,?FileAccess.ReadWrite)){XSSFWorkbook?workbook?=?new?XSSFWorkbook();ISheet?sheet?=?workbook.CreateSheet("Sheet1");string[]?excelHeader?=?new?string[]?{"點(diǎn)名稱(chēng)","編號(hào)",?"時(shí)間",?"埋深(m)",?"水深(m)",?"測(cè)試01",?"測(cè)試02",?"測(cè)試03",?"測(cè)試04",?"測(cè)試05",?"測(cè)試06",?"測(cè)試06",?"測(cè)試07",?"測(cè)試08",?"測(cè)試09"};IRow?headerRow?=?sheet.CreateRow(0);for?(int?i?=?0;?i?<?excelHeader.Length;?i++){headerRow.CreateCell(i).SetCellValue(excelHeader[i]);}int?count?=?mpInfoDictionary.Count;for?(int?i?=?0;?i?<?count;?i++){MeasurementPointInfo?mpi?=?mpInfoDictionary[i];IRow?row?=?sheet.CreateRow(i?+?1);row.CreateCell(0).SetCellValue("名稱(chēng)");row.CreateCell(1).SetCellValue(mpi.nSeq);row.CreateCell(2).SetCellValue(mpi.nDate.ToString());row.CreateCell(3).SetCellValue(mpi.dbDepth);row.CreateCell(4).SetCellValue(mpi.dbWaterDepth);row.CreateCell(5).SetCellValue(mpi.dbCPTDInfo);row.CreateCell(6).SetCellValue(mpi.dbCPTDOffInfo);row.CreateCell(7).SetCellValue(mpi.dbOneDragDisplaceDSe);row.CreateCell(8).SetCellValue(mpi.dbOneDragDisplaceDSn);row.CreateCell(9).SetCellValue(mpi.dbOneDragDisplaceDSu);row.CreateCell(10).SetCellValue(mpi.dbCPInfo);row.CreateCell(11).SetCellValue(mpi.dbCPOffInfo);row.CreateCell(12).SetCellValue(mpi.dbDisplaceSE);row.CreateCell(13).SetCellValue(mpi.dbDisplaceSN);row.CreateCell(14).SetCellValue(mpi.dbDisplaceSU);????}workbook.Write(fs);???????????//寫(xiě)入到Excel中??????????}可以導(dǎo)出如下所示表格:
寄語(yǔ)
人生短暫,我不想去追求自己看不見(jiàn)的,我只想抓住我能看得見(jiàn)的。
原創(chuàng)不易,給個(gè)關(guān)注。
我是阿輝,感謝您的閱讀,如果對(duì)你有幫助,麻煩點(diǎn)贊、轉(zhuǎn)發(fā) ?謝謝。
很高興能和您成為朋友。
推薦閱讀
分享給同做程序員的你我他
畢業(yè)四年,我當(dāng)初是如何走上編程這條路的!
物聯(lián)網(wǎng)工程專(zhuān)業(yè)的迷茫與抉擇
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的C#使用NPOI导出Excel文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WPF 基础控件之CheckBox样式
- 下一篇: [C# 项目实战]: 制作一个备忘录(经