NPOI自適應寬度不支援中文解決方案

2022-05-07 15:18:11 字數 889 閱讀 5563

最近乙個專案中涉及報表匯出為excel功能需求。我最開始使用微軟自身的excel com元件呼叫的方式進行匯出,發現當需要匯出的內容增大到一定程度時,速度十分緩慢,而且呼叫com元件需要在伺服器端安裝excel客戶端,新增伺服器對com元件的呼叫許可權,比較繁瑣,後來在網上找了下相關資訊,發現乙個基於excel的操作元件npoi,試了一下,匯出速度比較理想,縮短1/5左右。

不過在處理中文時,需要**列寬自動調整寬度時遇到問題,npoi的自帶函式autosizecolumn(int 列號)只能支援英文和數字,好吧,吐槽下,身為國人,中文確實給我帶來很大困擾,為什麼計算機不是中國人發明的:) 吐槽完問題還是需要解決,分析下主要的問題是不支援中文,英文和數字沒有問題,那就先用autosizecolumn(int

列號)處理一下,然後單獨解決中文,npoi自身自帶為列寬指定寬度函式setcolumnwidth(int 列號,int寬度),只需要遍歷一下每一列的文字,求出文字的寬度,算出這一列的最大值,重新設定本列的寬度即可。

下面是具體**:

//列寬自適應,只對英文和數字有效

for (int i = 0; i <= maxcolumn; i++)

//獲取當前列的寬度,然後對比本列的長度,取最大值

for (int columnnum = 0; columnnum <= maxcolumn; columnnum++)

else

if(currentrow.getcell(columnnum) != null)}}

sheet.setcolumnwidth(columnnum, columnwidth * 256);

}

需要注意的是列的寬度為 列寬*256,所以獲得的寬度需要處以256得到真實的寬度,同樣再設定的時候需要再乘上256才能得到正確的值。

linux vi 不支援中文

問題說明 網頁html與chi語言的結合,使用c語言輸出html語句,因為其中用到中文,出現亂碼 問題解決 1.在cgi中用到的 使用utf 8編碼,utf 8是國際統一的中文編碼 具體語句為 fprintf cgiout,metacharset utf 8 參考文章 2.上述步驟完成後,重新編譯,...

ubuntu server 不支援中文顯示

今天發現ubuntu server有乙個問題,就是不支援中文顯示。執行touch 哈哈,檔案建立成功,但使用ls檢視檔名的話,顯示的是一堆問號。有意思的是,想刪除它的話,必須使用rm 哈哈才可以,使用rm 的話是不行的。檔案中的中文也顯示為幾個問號。我從網上查了一下,執行了一下下面的命令 dpkg ...

Calcium不支援中文VS

如果有人用過calcium這個wpf的框架,我猜測都是在英文環境下使用的。總之這個東西整整花了我一天的時間去搞,sdk的安裝非常的簡單,簡單到傻瓜化的地步,而我用的清華的正版vs2010和2008都看不到新建calcium專案的選項,嘗試了很久一直被抑鬱,堅定地不重灌系統一遍又一遍的嘗試,最後發現同...