การใส่ค่าและกำหนดรูปแบบ 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 จึงเป็นสิ่งที่ใช้กันหลาย ๆ ครั้ง

ไม่มีความคิดเห็น:
แสดงความคิดเห็น