การใส่ค่าและกำหนดรูปแบบ Data ให้กับ Cell Excel ใน Java Apache POI
จากบทที่แล้วเราได้ทำการ สร้าง Cell ใน Excel โดยใช้ Java POI กันไปแล้ว แล้วก็เซตค่าให้กับแต่ละ Cell แล้วแต่ว่าถ้าสังเกตุดูจะเห็นว่าเวลาเราใส่ค่าเวลา หรือ Date ให้กับ Excel แล้วจะเป็นตัวเลขที่เดายาก และอ่านยาก ดังนั้น บทนี้เรามาดูวิธีง่าย ๆ ในการกำนหนดรูปแบบ และ format ให้กับ Date ใน Java Apache POI กันครับ มาดูตัวอย่างโค้ดตามด้านล่างกัน
package info.doesystem.tutorial.poi; import java.io.FileOutputStream; import java.util.Calendar; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CreationHelper; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelDateValueFormat { public static void main(String[] args) { try ( Workbook wb = new XSSFWorkbook(); FileOutputStream fileOut = new FileOutputStream("D://Blog/Temp File/workbook.xlsx") ){ // create sheet Sheet sheet = wb.createSheet("new sheet"); // create row Row row = sheet.createRow(0); // set Date value to cell row.createCell(0).setCellValue(Calendar.getInstance()); row.createCell(1).setCellValue(Calendar.getInstance().getTime()); // set Date value Format CreationHelper createHelper = wb.getCreationHelper(); CellStyle cellStyle = wb.createCellStyle(); cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("m/d/yy h:mm")); Cell cell2 = row.createCell(2); cell2.setCellValue(Calendar.getInstance()); cell2.setCellStyle(cellStyle); Cell cell3 = row.createCell(3); cell3.setCellValue(Calendar.getInstance().getTime()); cell3.setCellStyle(cellStyle); wb.write(fileOut); System.out.println("SUCCESS"); } catch (Exception ex) { System.out.println("Exception " + ex); } } }
ผลลัพธ์ที่ได้จากการรันโค้ดข้างบนจะได้ประมาณนี้
จากผลลัพธ์เมื่อเทียบกับโค้ดจะเห็นว่าถ้าเราใส่ Date หรือ Calendar เข้าไปแบบไม่เซต format จะทำให้ค่าที่ได้เป็นตัวเลขที่อ่านยาก ดังนั้นการใส่ format สำหรับ Date ใน Excel จึงเป็นสิ่งที่ใช้กันหลาย ๆ ครั้ง
ไม่มีความคิดเห็น:
แสดงความคิดเห็น