日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#操作NPOI插件的HSSFWorkBook,常见的那些坑

發布時間:2025/4/16 C# 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#操作NPOI插件的HSSFWorkBook,常见的那些坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  使用HSSFWorkBook類實例化時,經常會遇到一個問題:HSSFWorkBook.isReadOnly。

  HSSFWorkBook.isReadOnly,貌似是異常,但它又不影響你正常導出Excel模板,但是必須注意的是,Excel模板的后綴名要為.xls,如果是.xlsx,那么就會出現打開文件錯誤,其實是Excel版本的兼容性問題。

  有時候HSSFRow sheetRow = (HSSFRow)sheet.CreateRow(index);創建新的row,接著使用sheetRow.CreateCell(2).SetCellValue(new HSSFRichTextString("字符串"));給每個cell賦值時,有可能遇到一個問題:

for (int i=0; i<ts.Days; i++){HSSFRow sheetRow = (HSSFRow)sheet.CreateRow(4+i);sheetRow.CreateCell(0).SetCellValue(new HSSFRichTextString(startDate.AddDays(i).ToString("yyyy-MM-dd")));//日期:2018-01-01sheetRow.CreateCell(1).SetCellValue(new HSSFRichTextString(startDate.AddDays(i).ToString("dddd")));//周一、周二......//必須添加上"",如果沒有給空字符串,該cell為null,上傳模板的時候,Cells的個數會根據user是否輸入數據而有所改變sheetRow.CreateCell(2).SetCellValue(new HSSFRichTextString(""));sheetRow.CreateCell(3).SetCellValue(new HSSFRichTextString(""));sheetRow.CreateCell(4).SetCellValue(new HSSFRichTextString(""));}

?注意,代碼里頭有3個cell的值設置為"",如果不設置,那么這3個cell根本就是null,再者,當用戶把這個模板下載下來,有些cell輸入值,有些cell沒有輸入,如:

test1test2test3test4test5
?test2?test4?
??test3??
test1???test5
?????

那么在讀取數據的時候,第一行的Cells.Count==5,第二、四行的Cells.Count==2,第三行的Cells.Count==1,第五行的Cells.Count==0。如果像代碼里面設置空字符串,就不管后續用戶有沒有輸入新數據,都可以確保取到相關位置的值,不會出現out?of?range的異常。

  使用GetCell(index)方法精確找位:

  有時候你需要將上傳的excel表格的值顯示在客戶端,同時還要根據某幾個cell值是否為空值,或者null來進行剔除,如果真出現不定量的值為null的Cell個數,顯然用Cells[index]是不行的,上面提及到,Cells.Count不統計null的Cell格子,譬如對于上圖的第二行,Cells[0]的值可能就是test2,如何精確找到對應Cell的位置呢?為了應對此情況,NPOI還提供了一個方法來精確尋找Cell格子,就是GetCell(index)。那么通過GetCell(index)可以精確找到相應位置,進而可以判斷是否為空,是否為null,然后進行篩選,賦值等操作。

  使用StringCellValue方法,通常我們想要取出某個cell的值,可能會使用:

?

string resGp = sheet.GetRow(0).Cells[1].StringCellValue; //但如果,sheet.GetRow(0).Cells[1]的值是一個數值, //這里不是說數據類型,是形式上就是阿拉伯數字, //那么調用StringCellValue就會拋出異常 //不調用StringCellValue,其效果一樣,而且解決值為阿拉伯數字的情況 string resGp = sheet.GetRow(0).Cells[1];
//上面一句雖然避免了異常問題,但是,如果想獲取阿拉伯數值的數據,那就使用ToString()
string resGp = sheet.GetRow(0).Cells[1].ToString();

?

轉載于:https://www.cnblogs.com/SysoCjs/p/9789791.html

總結

以上是生活随笔為你收集整理的C#操作NPOI插件的HSSFWorkBook,常见的那些坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。