![](/img/trans.png)
[英]Java Apache POI Excel set border on specific cell and set currency cell format
[英]apache poi excel hours format set cell value java
我正在研究Excel的生成,並且還在Excel中完成了所有功能,但是出現了一個問題。 我只想設置像HH:MM這樣的單元格值而不是日期。 我有一個像12:45,36:30,102:50這樣的字符串。 但是,對於每個單元格,我想在Excel中檢測到這些單元格的時間格式大於24小時,如果我選擇了這些單元格,則要在Excel中顯示小時數的總和。 我不知道該怎么做。 我在堆棧上找到了類似的文章( 使用Apache POI讀取HH:MM:SS xls ),但是這篇文章僅顯示了如何讀取這些單元格。 我想設置一個大於24小時的單元格值,僅將小時和分鍾的格式設置為25:00、205:00、152:30。
你能幫助我嗎? 我真的很感謝你的影響!
促進評論的答案...。
Excel將日期存儲為1900或1904年以來的整數天,具體取決於設置ish ...(其中存在leap年問題)。 Excel將時間存儲為一天的一部分。 因此,在1900窗口文件中,取決於所使用的格式字符串
0.1 = 02:24:00
0.5 = 12:00:00
1.5 = 1900-01-02 12:00:00
1.5 = 36:00:00
因此,如果您要存儲和顯示36小時,請計算一天中的哪一部分時間(1.5),然后對其應用格式字符串,該字符串支持> 36小時。 格式為HH:MM
,您將獲得12:00
。 格式為[HH]:MM
,您將獲得36:00
使用Excel計算出所需的格式字符串-POI只需將您提供的格式字符串寫入文件中,然后Excel就會像將其寫入Excel一樣呈現它!
終於我從@Gagravrr答案得到解決方案
下面的代碼將12:00轉換為0.5或類似的代碼
Date inserted_date = time_format.parse((String) obj);
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("[HH]:MM"));
Calendar calendar = Calendar.getInstance();
calendar.setTime(inserted_date);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
//System.out.println("\nHOUR :"+hours+"\n");
//System.out.println("\nMINS :"+minutes+"\n");
//System.out.println("\nCALC :"+ hours/24d+(minutes/60d)/24d +"\n");
cell.setCellValue(hours / 24d + (minutes / 60d) / 24d);
cell.setCellStyle(cellStyle);
此代碼僅插入時間,並在excel工作表上自動對選定的單元格求和。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.