簡體   English   中英

apache poi Excel小時格式設置單元格值java

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM