精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

.NET Core首例Office開源跨平臺組件(NPOI Core)

開發 后端
最近項目中,需要使用到 Excel 導出,找了一圈發現沒有適用于 .NET Core的,不依賴Office和操作系統限制的 Office 組件,于是萌生了把 NPOI 適配并移植到 .NET Core 的想法。

前言

最近項目中,需要使用到 Excel 導出,找了一圈發現沒有適用于 .NET Core的,不依賴Office和操作系統限制的 Office 組件,于是萌生了把 NPOI 適配并移植到 .NET Core 的想法。

NPOI 的介紹不多說了,不了解的可以看一下 NPOI百度百科 的介紹,在此感謝瞿總和他的團隊的貢獻。

NPOI 的移植之路并非想象的那么容易,因為其依賴了 System.Drawing 和 System.Window.Forms 兩個組件,還有一個第三方的 SharpZipLib 庫,在 GitHub 克隆了***的代碼并且轉換為 NetStandrad 1.6 編譯之后,出現了數不清的錯誤,應該有上千個吧,在經過一天的努力之后(包括刪除,修改,重寫),錯誤數量已經減少到了100多個,50多個,20多個,編譯通過。

在移植的過程中可以真切感受到當初NPOI的作者在寫這些代碼時候的辛苦努力,因為NPOI最初是基于 .Net Framework 1.1 框架寫的,那個時候沒有泛型,沒有var,沒有很多的現成的類庫,全都是靠最基礎的一些數據結構來實現,雖然里面的很多種寫法在目前看來可以很大程序的精簡,但是在當時的條件下 真的是不容易。

在通過編譯之后,心里想著應該問題不大了,于是測試了一下,不幸的是,各種問題,又經過半天的調整之后,打算放棄了。 于是又去 github 上面搜索看看有沒有其他什么解決方案之類的,無意間搜索到了一個 NPOI.Core 的一個項目,是一個老外移植的 NPOI 到Core平臺,原來已經有人做了Core的移植了,克隆下來之后發現編譯不過,又進去看了一下代碼,這個庫目前依賴于Windows平臺,而我們項目是運行在CentOS的,其并不能在Linux上運行,看來還是空歡喜一場。

怎么辦? 于是,又一次重構開始了,有了前一次的重構經驗之后,這一次可謂是輕車熟路了,NPOI Core 庫 里面使用了很多.NET Core netstandrad 標準不支持的 Hashtable 和 ArrayList 等數據結構,這些已經被新的泛型 Directory 和 List 替代了,還有依賴的 SharpZipLib 等壓縮組件也都替換成了 NetStandrad 的實現,當然還有其他很多雜七雜八的就不細說了,***,終于 netstandrad 1.6 下編譯通過。

通過之后,本地 visual studio 下 新建了一個項目,簡單測試了導出 Excel 的功能,沒問題,也沒有報錯,心里很開心...。 這個時候我在想,最關鍵的就是能不能在Linux上正常運行了,其實這個時候我心里想我已經把依賴于.NET Framework 的各種類都換成了net standrad了,應該問題不大了。

然后在一頓 dotnet publish 之后,把部署包傳到了 Linux 下進行測試,果然,運行通過,并沒有拋出任何異常,而且Excel也生成了,把Excel傳輸到windows上使用office打開,***...

然后緊接著就是繼續各種測試了,在測試到 Word 的導出功能時候,出問題了。因為NPOI 天生對Word的功能支持的并不是很完善,心想是不是.NET Framewok下導出也不行啊,于是又新建的一個.NET Framework的項目,使用NPOI Team提供的 dll 測試,發現可以導出。然后就開始跟代碼,各種測試,重構,最終Word的導出功能也沒有問題了。緊接著又發到了Linux上測試,沒有問題,心里的石頭落地了。

在通過測試之后,本想著把這次調整的代碼以 PR 的形式推送給原作者的時候,發現好像原作者已經不維護這個項目了,無奈,只能自己發布NuGet了。

于是我就把它重新發布到 NuGet 了,如果使用的過程中有問題,大家可以去我的github下面提交 issue。

GitHub : https://github.com/yuleyule66/Npoi.Core

NuGet :


image

Getting Started

導出 Excel

本示例代碼包含:

  • 多個 Sheet

  • 合并單元格

  • 自動調整列寬

  • 填充背景色

  1. var newFile = @"newbook.core.xlsx"
  2.  
  3. using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write)) { 
  4.  
  5.     IWorkbook workbook = new XSSFWorkbook(); 
  6.  
  7.     ISheet sheet1 = workbook.CreateSheet("Sheet1"); 
  8.  
  9.     sheet1.AddMergedRegion(new CellRangeAddress(00010)); 
  10.     var rowIndex = 0
  11.     IRow row = sheet1.CreateRow(rowIndex); 
  12.     row.Height = 30 * 80
  13.     row.CreateCell(0).SetCellValue("這是單元格內容,可以設置很長,看能不能自動調整列寬"); 
  14.     sheet1.AutoSizeColumn(0); 
  15.     rowIndex++; 
  16.  
  17.  
  18.     var sheet2 = workbook.CreateSheet("Sheet2"); 
  19.     var style1 = workbook.CreateCellStyle(); 
  20.     style1.FillForegroundColor = HSSFColor.Blue.Index2; 
  21.     style1.FillPattern = FillPattern.SolidForeground; 
  22.  
  23.     var style2 = workbook.CreateCellStyle(); 
  24.     style2.FillForegroundColor = HSSFColor.Yellow.Index2; 
  25.     style2.FillPattern = FillPattern.SolidForeground; 
  26.  
  27.     var cell2 = sheet2.CreateRow(0).CreateCell(0); 
  28.     cell2.CellStyle = style1; 
  29.     cell2.SetCellValue(0); 
  30.  
  31.     cell2 = sheet2.CreateRow(1).CreateCell(0); 
  32.     cell2.CellStyle = style2; 
  33.     cell2.SetCellValue(1); 
  34.  
  35.     cell2 = sheet2.CreateRow(2).CreateCell(0); 
  36.     cell2.CellStyle = style1; 
  37.     cell2.SetCellValue(2); 
  38.  
  39.     cell2 = sheet2.CreateRow(3).CreateCell(0); 
  40.     cell2.CellStyle = style2; 
  41.     cell2.SetCellValue(3); 
  42.  
  43.     cell2 = sheet2.CreateRow(4).CreateCell(0); 
  44.     cell2.CellStyle = style1; 
  45.     cell2.SetCellValue(4); 
  46.  
  47.     workbook.Write(fs); 

導出 Word

本示例代碼包含:

  • 設置段落對其方式

  • 設置段落字體

  • 設置段落縮進

  • 這是字體大小

  1. var newFile2 = @"newbook.core.docx"
  2. using (var fs = new FileStream(newFile2, FileMode.Create, FileAccess.Write)) { 
  3.     XWPFDocument doc = new XWPFDocument(); 
  4.     var p0 = doc.CreateParagraph(); 
  5.     p0.Alignment = ParagraphAlignment.CENTER; 
  6.     XWPFRun r0 = p0.CreateRun(); 
  7.     r0.FontFamily = "microsoft yahei"
  8.     r0.FontSize = 18
  9.     r0.IsBold = true
  10.     r0.SetText("這里是標題"); 
  11.  
  12.     var p1 = doc.CreateParagraph(); 
  13.     p1.Alignment = ParagraphAlignment.LEFT; 
  14.     p1.IndentationFirstLine = 500
  15.     XWPFRun r1 = p1.CreateRun(); 
  16.     r1.FontFamily = "仿宋"
  17.     r1.FontSize = 12
  18.     r1.IsBold = true
  19.     r1.SetText("這里是正文,這里是正文這里是正文這里是正文這里是正文這里是正文這里是正文這里是正文這里是正文這里是正文這里是正文這里是正文"); 
  20.  
  21.     doc.Write(fs); 

總結

據不完全統計,這應該是 .NET Core 首例 Office 跨平臺 組件了,大家如果在使用的過程中有什么問題,可以在 Github 上提交Issue(盡量使用英文)。當然更希望你能夠提交 PR 來幫助一起完善 NPOI。

如果你覺得本篇博客對您有幫助的話,感謝您的【推薦】。

如果你對 .NET Core 感興趣可以關注我,我會定期在博客分享關于 .NET Core 的學習心得。


本文地址:http://www.cnblogs.com/savorboard/p/netcore-npoi.html
作者博客:Savorboard

責任編輯:張燕妮 來源: 博客園
相關推薦

2022-08-29 07:05:30

零代碼產品.NET Core

2023-10-07 08:06:55

2024-02-26 07:31:26

WindowsLinuxmacOS

2023-12-05 07:48:27

.NET開源

2025-01-15 00:01:00

開發應用界面

2019-08-07 14:25:21

.NET.NET Core 3編程語言

2024-06-11 09:00:00

異步編程代碼

2018-08-20 08:03:46

跨平臺 Web操作系統

2021-12-05 18:22:20

.NETLS Cipher套件

2021-06-06 13:07:06

.NETWindowsLinux

2024-09-09 07:37:51

AspJWT權限

2021-06-05 23:41:47

NET異常 HttpClient

2024-06-27 10:48:48

2024-09-30 09:48:41

RabbitMQ消息中間件

2024-03-13 13:44:43

開發插件開源

2021-04-28 09:56:44

鴻蒙HarmonyOS應用

2024-11-12 07:28:39

2021-03-12 00:04:52

網關Api

2021-11-14 07:34:57

.NETEventCounte性能

2021-07-06 23:48:45

.NET用戶信息
點贊
收藏

51CTO技術棧公眾號

一区二区三区午夜| 免费看污片的网站| 日韩激情电影| 欧美国产丝袜视频| 成人av番号网| 国产一级视频在线播放| 奇米狠狠一区二区三区| 69堂亚洲精品首页| 男人添女人下面高潮视频| 国产在线观看高清视频| 国产精品一区二区三区99| 欧美激情a在线| www久久久久久久| 亚洲一区二区三区日本久久九| 色综合久久久网| 久久精品在线免费视频| 毛片在线免费| 成人性生交大片免费看中文网站| 国产精品1区2区在线观看 | 日韩极品在线| 欧美一区二区三区思思人| 3d动漫一区二区三区| 国产网友自拍视频导航网站在线观看 | 亚洲av无码国产综合专区 | 亚洲激情欧美激情| 日韩中文不卡| 天天av综合网| 国产成人鲁色资源国产91色综| 国产精国产精品| 国产成人在线观看网站| 欧美精品自拍| 久久伊人色综合| 午夜国产福利视频| 国产欧美日韩精品高清二区综合区| 日韩精品一区二区三区蜜臀| 欧美三级午夜理伦三级富婆| 性欧美videohd高精| 亚洲国产精品久久人人爱| 中文字幕99| 伊人免费在线| 国产日韩精品视频一区| 免费国产一区| 亚洲av电影一区| av一二三不卡影片| 国产另类自拍| 黄色av一区二区三区| 国产一区二区三区不卡在线观看| 国产精品久久久久久久久| www.国产一区二区| 免费亚洲一区| 日韩免费观看高清| 久久精品无码av| 视频在线观看91| 日本久久久久久久| 日韩一级在线视频| 久久久精品性| 奇米一区二区三区四区久久| 国产又爽又黄的视频| 国产日韩欧美三级| 琪琪亚洲精品午夜在线| 国产一级淫片a视频免费观看| 在线亚洲成人| 首页国产欧美日韩丝袜| 国产欧美精品区一区二区三区| 久久伊人资源站| 青青久草在线| 国产日韩欧美精品电影三级在线| 日韩精品av一区二区三区| 国产一二三在线观看| 欧美激情综合五月色丁香| 亚洲国产精品一区在线观看不卡 | 国产精品99久久久| 99久久无色码| 三级在线观看网站| 久久久久99精品国产片| 视频在线99| 黄网页免费在线观看| 亚洲精品国产一区二区精华液| 久久久国内精品| 在线免费av资源| 欧美中文字幕亚洲一区二区va在线| 久久久精品麻豆| 中文字幕成人| 亚洲精品成人av| 精品成人无码一区二区三区| 久久久久亚洲| 91精品国产色综合| 伊人免费在线观看高清版| 国产麻豆视频精品| 久久手机视频| 黄色精品免费看| 五月天国产精品| 在线观看高清免费视频| 在线观看视频一区二区三区| 日韩精品免费观看| 手机在线中文字幕| 一本色道久久| 成人综合网网址| 亚洲三区在线观看无套内射| 欧美激情一区二区三区不卡| 国产黄色激情视频| 在线日本欧美| 精品盗摄一区二区三区| 国产又粗又长又硬| 精品999成人| 国产日韩欧美影视| 十九岁完整版在线观看好看云免费| 中文av一区特黄| 91九色丨porny丨国产jk| 99久久综合国产精品二区| 精品久久久久久久人人人人传媒 | 国产高清免费在线观看| 久久午夜电影网| 欧美久久久久久久久久久久久久| 欧美暴力调教| 国产视频精品xxxx| 国产亚洲精品久久久久久打不开| 轻轻草成人在线| 久久99精品国产一区二区三区| 亚洲s色大片| 一本一本大道香蕉久在线精品 | 超碰在线观看av| 国产精品乱人伦| 能在线观看的av网站| 精品人人人人| 国内精品国产三级国产在线专| 一级特黄aaaaaa大片| 久久久午夜电影| 欧美久久久久久久久久久久久| 91麻豆精品| xvideos成人免费中文版| 午夜精品久久久久久久蜜桃| av一本久道久久综合久久鬼色| 日本精品福利视频| 亚洲一区有码| 久久精品这里热有精品| 亚洲手机在线观看| 中文在线一区二区| 不卡av免费在线| 欧美一区电影| 国产精品成人观看视频国产奇米| 丝袜视频国产在线播放| 无吗不卡中文字幕| 欧美肉大捧一进一出免费视频| 国语精品一区| 国产日韩一区欧美| 日本资源在线| 欧美va在线播放| 欧美日韩偷拍视频| 国产精品一品二品| 中文字幕の友人北条麻妃| 国产美女精品视频免费播放软件| 有码中文亚洲精品| 在线观看不卡的av| 亚洲欧洲www| 师生出轨h灌满了1v1| 欧美人成在线| 精品亚洲一区二区三区四区五区高| 91在线超碰| 亚洲老头老太hd| 中文文字幕一区二区三三| 亚洲欧洲日本在线| 色婷婷狠狠18禁久久| 亚洲精品视频啊美女在线直播| 久久av二区| avav成人| 欧美日韩成人在线视频| 午夜福利理论片在线观看| 欧美日韩亚洲一区二区| 性欧美精品男男| 黄页视频在线91| 欧美黑人在线观看| 亚洲第一福利专区| 国产精品网站大全| 调教一区二区| 亚洲精品一区二区网址| 综合久久中文字幕| 亚洲精品美腿丝袜| 亚洲天堂成人av| 老鸭窝一区二区久久精品| 久久久久久久9| 国产一区二区三区日韩精品| 91精品在线观| 小h片在线观看| www.亚洲成人| 日韩a在线观看| 欧美精品视频www在线观看| 久久久精品99| 国产色婷婷亚洲99精品小说| 三级av免费看| 亚洲欧美清纯在线制服| 制服诱惑一区| 色爱综合av| 亚洲一区二区三区777| 欧美少妇精品| 久久九九国产精品怡红院| 天天操天天干天天爱| 欧美三级韩国三级日本一级| 国产一级片网址| 国产精品乱码一区二区三区软件 | 一级黄色高清视频| 国产亚洲精品v| 超碰人人爱人人| 日本a口亚洲| 精品人伦一区二区三区| 美女久久精品| 国产精品偷伦免费视频观看的| 男女在线视频| 久久人人爽人人爽人人片亚洲| 欧洲亚洲在线| 亚洲福利影片在线| 99精品久久久久久中文字幕| 欧美系列日韩一区| 成人午夜视频精品一区| 亚洲精品国产一区二区三区四区在线 | 久久成人免费视频| 成年人视频免费在线观看| 亚洲护士老师的毛茸茸最新章节| 国产精品一品二区三区的使用体验| 狠狠躁夜夜躁人人躁婷婷91| 久久一二三四区| 成人欧美一区二区三区1314| 国产三级短视频| 久久一区二区三区国产精品| 亚洲一区二区在线免费| 国产成人精品1024| 国产91在线免费观看| 久久精品国产99久久6| 激情网站五月天| 亚洲欧美视频| av动漫在线看| aⅴ色国产欧美| 欧美啪啪免费视频| 亚洲欧洲一区二区天堂久久| 国产传媒久久久| 欧美精品不卡| 国产一级不卡视频| 牛牛国产精品| 特级西西444| 欧美日韩蜜桃| 欧美大黑帍在线播放| 黄色亚洲在线| 青青草国产精品视频| 99精品视频免费| 久久久999免费视频| 亚洲一区二区免费看| www国产黄色| 老牛嫩草一区二区三区日本| 美女喷白浆视频| 老司机精品视频在线| 久久6免费视频| 国产福利不卡视频| 久久久男人的天堂| 成人avav影音| 中文字幕一区二区久久人妻网站| 成人av免费在线播放| 午夜一区二区三区免费| 久久免费视频一区| 欧美一区二区三区粗大| 亚洲欧洲美洲综合色网| 国产亚洲精品av| 欧美日韩一区二区在线| 欧美高清69hd| 91精品国产一区二区人妖| 亚洲精品一区二区三区新线路| 欧美精品一区二区三区四区 | 91国内精品| 久久久久se| 欧美成免费一区二区视频| 99中文字幕在线观看| 亚洲三级色网| www.欧美日本| 国产一区二区三区美女| 手机在线成人av| 欧美国产乱子伦| 久久久精品视频免费观看| 午夜精品久久久久久| 中文字幕在线日本| 制服.丝袜.亚洲.另类.中文| 亚洲精品久久久蜜桃动漫| 亚洲人成电影网站色www| 毛片在线看片| 91精品国产高清自在线| 日韩一级视频| 精品网站在线看| 国产精品福利在线观看播放| 男人用嘴添女人下身免费视频| 青椒成人免费视频| 亚洲色图欧美另类| 欧美国产日韩精品免费观看| 久久久久久久黄色| 在线免费观看日韩欧美| 亚洲国产精品二区| 一个人看的www久久| 欧美xxxx黑人又粗又长| 国产精品久久久久久久久久ktv| 大型av综合网站| 亚洲精品日韩成人| 99亚洲视频| 一个人看的视频www| 国产日韩v精品一区二区| 国产成人精品亚洲男人的天堂| 欧美三级电影在线看| 人人九九精品| 欧美多人爱爱视频网站| 欧美视频精品| 欧美日韩三区四区| 欧美精品色网| 亚洲一区精品视频在线观看| 96av麻豆蜜桃一区二区| 国产va在线播放| 欧美日韩国产美| 国产黄在线观看免费观看不卡| 国内精品久久久久久| 欧美.com| 制服丝袜综合日韩欧美| 日韩电影在线观看网站| 少妇精品一区二区| 亚洲成a天堂v人片| 精品欧美在线观看| xxx一区二区| 欧美一级二级视频| 日本午夜精品电影| 亚洲综合好骚| 欧美双性人妖o0| 亚洲一区二区高清| 国内精品国产成人国产三级| 久久精品2019中文字幕| 成人综合网站| 亚洲国产欧美日韩| 免费黄网站欧美| 手机看片国产日韩| 91国模大尺度私拍在线视频| 免费成人av电影| 国产99久久久欧美黑人| 国产99久久精品一区二区300| 亚洲美免无码中文字幕在线 | 欧美一二三四区在线| 国内外激情在线| 亚洲精品欧美日韩| 中文字幕一区二区三区欧美日韩| 色播五月激情五月| 综合久久一区二区三区| 99久久免费国产精精品| 欧美成人精品h版在线观看| 国产专区精品| 欧美日韩激情四射| 粉嫩aⅴ一区二区三区四区| 精品视频在线观看免费| 亚洲国产第一页| 中文字幕影音在线| 日韩精品资源| 精品一区二区三区在线观看国产| 久草视频手机在线| 日韩精品一区二区三区在线播放| 四虎影视成人| 狠狠色综合欧美激情| 久久精品欧洲| 亚洲AV成人无码网站天堂久久| 51精品久久久久久久蜜臀| 伊人精品影院| 国外成人免费视频| 久久久成人网| 91精品一区二区三区蜜桃| 91精品国产免费| 国产91足控脚交在线观看| 鲁鲁狠狠狠7777一区二区| 日韩高清一级片| 最新一区二区三区| 亚洲精品aⅴ中文字幕乱码| 电影亚洲精品噜噜在线观看 | 一区二区三区国产盗摄| 真实乱视频国产免费观看| 欧美日韩中文字幕一区二区| 18+激情视频在线| 蜜桃91精品入口| 另类欧美日韩国产在线| 久久精品欧美一区二区| 亚洲品质视频自拍网| 成人亚洲精品| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 性欧美video另类hd尤物| 国产精品三级一区二区| 国产丝袜美腿一区二区三区| 精品国产无码一区二区| 欧美在线免费看| 91精品电影| 波多野结衣a v在线| 日韩亚洲欧美高清| 大胆人体一区| 50度灰在线观看| 日本一区二区三区免费乱视频| 超碰免费在线97| 国产精品一久久香蕉国产线看观看| 午夜激情一区| 538精品视频| 日韩大陆毛片av| 国内不卡的一区二区三区中文字幕| av之家在线观看| 亚洲欧美电影院|