台灣最大程式設計社群網站
線上人數
1031
 
會員總數:243277
討論主題:188067
歡迎您免費加入會員
討論區列表 >> C# >> NPOI的EXCEL是否有數字欄位請靠右, 並加千分位符號以利閱讀
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
NPOI的EXCEL是否有數字欄位請靠右, 並加千分位符號以利閱讀
價值 : 30 QP  點閱數:407 回應數:15

樓主

liping
門外漢
0 7
239 29
發送站內信

各位大大好:
請問NPOI的EXCEL數字欄位請靠右, 並加千分位符號以利閱讀,但有些欄位也含有%資料,請問可以使用那些?謝謝.



搜尋相關Tags的文章: [ NIPO ] , [ EXCEL ] ,
本篇文章發表於2018-05-31 08:54
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

春天
檢舉此回應
https://www.ez2o.com/Blog/Post/csharp-Excel-NPOI-Font-Style
網路上找資料吧
本篇文章回覆於2018-05-31 09:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

liping
檢舉此回應
參考資料.NET匯出到EXCEL利用NPOI指定欄位儲存格格式

寫死方式,如何寫動態?思考中...
XSSFSheet ws = (XSSFSheet)wb.CreateSheet("Summary");
XSSFRow Row = (XSSFRow)ws.CreateRow(21);
Row.CreateCell(1).SetCellValue(Convert.ToDouble("1776"));
XSSFCellStyle cs = (XSSFCellStyle)wb.CreateCellStyle();
//Format格式為數字
cs.DataFormat = HSSFDataFormat.GetBuiltinFormat("0");
Row.GetCell(1).CellStyle = cs;
本篇文章回覆於2018-06-03 16:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

春天
檢舉此回應
什麼東西要動態
本篇文章回覆於2018-06-04 10:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

liping
檢舉此回應
春天大大 你好:
我試著這樣寫但"%"的出不來,請問是否哪裡有寫錯?

for (int i = 0; i < dt2.Rows.Count; i++)
{
ws2.CreateRow(i + 1);
for (int j = 0; j < dt2.Columns.Count; j++)
{
ws2.AutoSizeColumn(i); //自動調整欄寬 AutoSizeColumn從0開始計算
XSSFRow Row = (XSSFRow)ws2.GetRow(i + 1);
if (j == 0)
{
ws2.GetRow(i + 1).CreateCell(j).SetCellValue(dt2.Rows[i][j].ToString());
}

else if ((j == 1) || (j == 2) || (j == 3) || (j == 4) || (j == 5))
{
Row.CreateCell(j).SetCellValue(Convert.ToDouble(dt2.Rows[i][j].ToString()));
XSSFCellStyle cs = (XSSFCellStyle)wb.CreateCellStyle();
//Format格式為數字
cs.DataFormat = HSSFDataFormat.GetBuiltinFormat("0");
Row.GetCell(j).CellStyle = cs;
}
else
{
Row.CreateCell(j).SetCellValue(Convert.ToDouble(dt2.Rows[i][j].ToString()));
XSSFCellStyle cs = (XSSFCellStyle)wb.CreateCellStyle();
//Format格式為百分比小數一位
cs.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.0%");
Row.GetCell(j).CellStyle = cs;
}
}
本篇文章回覆於2018-06-04 11:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

春天
檢舉此回應
輸入是什麼,預期輸出是什麼,結果輸出顯示什麼
本篇文章回覆於2018-06-04 15:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

liping
檢舉此回應
目前
由Vendor作業(A) 由Buyer作業(B) 小計(C=A+B) ERP收料手動輸人(D) 總到料項數(E=C+D) 平台使用率_Vendor(A/E) 平台使用率_Buyer(B/E) 平台使用率(C/E)
696 281 977 111 1088 64 25.8 89.8
1368 540 1908 3 1911 71.6 28.3 99.8
438 109 547 0 547 80.1 19.9 100
1168 228 1396 3 1399 83.5 16.3 99.8
11 2 13 0 13 84.6 15.4 100
1627 176 1803 50 1853 87.8 9.5 97.3
1584 86 1670 14 1684 94.1 5.1 99.2
2991 70 3061 110 3171 94.3 2.2 96.5
3599 110 3709 0 3709 97 3 100
1036 26 1062 1 1063 97.5 2.4 99.9
2500 44 2544 0 2544 98.3 1.7 100
2349 22 2371 12 2383 98.6 0.9 99.5

希望
由Vendor作業(A) 由Buyer作業(B) 小計(C=A+B) ERP收料手動輸人(D) 總到料項數(E=C+D) 平台使用率_Vendor(A/E) 平台使用率_Buyer(B/E) 平台使用率(C/E)
696 281 977 111 1088 64% 25.8% 89.8%
1368 540 1908 3 1911 71.6% 28.3% 99.8%
438 109 547 0 547 80.1% 19.9% 100%
1168 228 1396 3 1399 83.5% 16.3% 99.8%
11 2 13 0 13 84.6% 15.4% 100%
1627 176 1803 50 1853 87.8% 9.5% 97.3%
1584 86 1670 14 1684 94.1% 5.1% 99.2%
2991 70 3061 110 3171 94.3% 2.2% 96.5%
3599 110 3709 0 3709 97% 3% 100%
1036 26 1062 1 1063 97.5% 2.4% 99.9%
2500 44 2544 0 2544 98.3% 1.7% 100%
2349 22 2371 12 2383 98.6% 0.9% 99.5%
本篇文章回覆於2018-06-04 16:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

春天
檢舉此回應
cs.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.0%");
改成
cs.SetDataFormat(HSSFDataFormat.GetBuiltinFormat("0.0%"));
試試看吧,我猜是SetDataFormat另外有做事
本篇文章回覆於2018-06-04 16:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

liping
檢舉此回應
春天大大 你好:

我改了還是一樣~
本篇文章回覆於2018-06-04 17:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

liping
檢舉此回應
春天大大 你好:

在npoi中"0.0%"當作"0.0"數值一位
若藥用"0.00%"才會出現百分比但是是兩位,這是EXCEL的預設值~
本篇文章回覆於2018-06-05 08:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

哈特利
檢舉此回應
我也有相同的問題,讀取excel檔進入c#轉成DataTable,但輸出卻會將數字變成字串型態的數字,會導致Excel檔沒有辦法運算...
也找了很久,找不到解答
本篇文章回覆於2018-06-05 09:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

liping
檢舉此回應
HI 哈特利:
參考一下這篇
NPOI匯出EXCEL後數字無法計算
本篇文章回覆於2018-06-05 10:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

哈特利
檢舉此回應
liping 你好
我一開始是看 黑暗執行緒 大大的文章建立的程式
在讀取時 他有判斷各個欄位的型態
但,經由DataRow存入DataTable後,在輸出時卻好像把全部欄位都轉換成字串形式
我的疑問是經過DataTable後,如何保留原本判定的格式
感謝你!
本篇文章回覆於2018-06-05 10:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

春天
檢舉此回應
object.GetType()可以取得Type
本篇文章回覆於2018-06-05 10:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
回應

哈特利
檢舉此回應
春天你好, 以下是我判斷type的程式碼

在case Numeric中 SetCellValue不知道是否有使用錯誤的問題,
會跳出 物件不可從DBNull 轉換為其他類型
本篇文章回覆於2018-06-05 10:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

春天
檢舉此回應
你不是讀取Excel嗎,為何這邊是SetValue
hr.GetCell(j).SetCellValue(Convert.ToInt32(dataRow[j]));
你的DataRow是NewRow()來的沒有任何資料,dataRow[j]是Null,Convert下去就拋異常了
我猜你是想這樣寫
dataRow[j] = Convert.ToInt32(hr.GetCell(j));
本篇文章回覆於2018-06-05 11:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.