หากคุณเป็นนักพัฒนาแอปพลิเคชัน Java ที่ทำงานร่วมกับ Excel จากภายในแอปพลิเคชัน Java ของคุณคุณจะสนใจที่จะให้ฟังก์ชั่นการจัดการข้อมูล Excel ในแอปพลิเคชันของคุณ Excel ช่วยให้คุณจัดรูปแบบการจัดรูปแบบเซลล์ตั้งค่าประเภทของเซลล์เป็นชนิดข้อมูลที่แตกต่างกันเติมเซลล์ด้วยสีที่แตกต่างกันและอื่น ๆ Apache Poi ทำหน้าที่เป็นสะพานเชื่อมระหว่าง Java และ Excel นำเสนอเครื่องมือในการจัดการ Excel ไฟล์ XLSX โดยทางโปรแกรม ในซีรีส์บล็อกนี้เราจะเปิดตัวศิลปะการจัดการเซลล์ Excel โดยใช้ Apache Poi ใน Java มาดำน้ำและค้นพบการทำงานร่วมกันของรหัสและสเปรดชีต!

สารบัญ

ตลอดทั้งบล็อกเราจะผ่านตัวอย่างรหัสและคำอธิบายเดียวกันสำหรับสิ่งต่อไปนี้:

  1. การสร้างเซลล์ในไฟล์ Excel
  2. สร้างเซลล์วันที่ใน Excel
  3. การทำงานกับเซลล์ประเภทต่าง ๆ
  4. การตั้งค่าลักษณะของเซลล์

การทำงานกับเซลล์ในไฟล์ excel ใน java

การสร้างเซลล์ในไฟล์ excel

//Create Cells
XSSFWorkbook wb = new XSSFWorkbook();
XSSFCreationHelper createHelper = wb.getCreationHelper();
XSSFSheet sheet = wb.createSheet("new sheet");
// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow(0);
// Create a cell and put a value in it.
Cell cell = row.createCell(0);
cell.setCellValue(1);
row.createCell(1).setCellValue(1.2);
row.createCell(2).setCellValue(createHelper.createRichTextString("This is a string"));
row.createCell(3).setCellValue(true);
// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}

ตัวอย่างโค้ด Java ข้างต้นแสดงให้เห็นถึงการใช้ Apache Poi API เพื่อทำงานกับเซลล์ในสมุดงาน Excel รหัสสร้างสมุดงาน Excel ใหม่ (\ **xssfworkbook** \) เริ่มต้นแผ่นงานภายในสมุดงานแล้วเติมเซลล์ด้วยข้อมูลประเภทต่างๆ ก่อนอื่นรหัสสร้างแผ่นใหม่ชื่อ“ แผ่นใหม่ ” จากนั้นจะสร้างแถวที่ดัชนี 0 บนแผ่นงานและดำเนินการเพื่อเติมเต็มเซลล์ภายในแถวนั้น เซลล์แรก (ดัชนี 0) ได้รับการกำหนดค่าจำนวนเต็ม 1 โดยใช้เมธอด \ **setCellValue** \ ในทางตรงกันข้ามเซลล์ที่สอง (ดัชนี 1) ถูกตั้งค่าเป็นค่าทศนิยมที่ 1.2 โดยตรงภายใน \ **createCell** \ เมธอด เซลล์ที่สาม (ดัชนี 2) มีค่าสตริง“ นี่คือสตริง” ที่สร้างขึ้นโดยใช้เมธอด \ **createrichtextString** \ จากอินสแตนซ์ \ **xssfcreationHelper** \ สุดท้ายเซลล์ที่สี่ (ดัชนี 3) จะถูกเติมด้วยค่าบูลีน“ จริง” หลังจากตั้งค่าค่าเซลล์แล้วรหัสจะเขียนสมุดงานผลลัพธ์ไปยังไฟล์ excel ชื่อ“ workbook.xlsx” โดยใช้ \ **fileoutputStream** \

การสร้างเซลล์ประเภทวันที่

XSSFWorkbook wb = new XSSFWorkbook();
//Workbook wb = new XSSFWorkbook();
CreationHelper createHelper = wb.getCreationHelper();
org.apache.poi.ss.usermodel.Sheet sheet = wb.createSheet("new sheet");
// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow(0);
// Create a cell and put a date value in it.  The first cell is not styled
// as a date.
Cell cell = row.createCell(0);
cell.setCellValue(new Date());
// we style the second cell as a date (and time).  It is important to
// create a new cell style from the workbook otherwise you can end up
// modifying the built in style and effecting not only this cell but other cells.
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setDataFormat(
    createHelper.createDataFormat().getFormat("m/d/yy h:mm"));
cell = row.createCell(1);
cell.setCellValue(new Date());
cell.setCellStyle(cellStyle);
//you can also set date as java.util.Calendar
cell = row.createCell(2);
cell.setCellValue(Calendar.getInstance());
cell.setCellStyle(cellStyle);
// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}

ตัวอย่างโค้ด Java นี้แสดงการใช้ Apache Poi API สำหรับการทำงานกับเซลล์ประเภทวันที่ในสมุดงาน Excel รหัสเริ่มต้นด้วยการสร้างสมุดงาน Excel ใหม่ (\ **xssfworkbook** \) เซลล์แรก (ดัชนี 0) มีวัตถุประสงค์เพื่อเก็บค่าวันที่ A \ **วันที่** \ วัตถุที่แสดงถึงวันที่และเวลาปัจจุบันถูกตั้งค่าเป็นค่าของเซลล์โดยใช้วิธี \ **setCellValue** \ เมธอด เซลล์นี้ไม่ได้มีสไตล์อย่างชัดเจนเป็นวันที่ สำหรับเซลล์ที่สอง (ดัชนี 1) รูปแบบเซลล์ใหม่ (\ CellStyle \) ถูกสร้างขึ้นโดยใช้วิธี \ createCellstyle \ วิธีการของสมุดงาน รูปแบบนี้จะถูกกำหนดค่าให้มีรูปแบบวันที่และเวลาที่เฉพาะเจาะจงโดยใช้เมธอด \ setDataFormat \ \ createDataFormat (). getFormat (“ M/D/YY H: MM”) \ กระบวนการสร้างรูปแบบวันที่ที่กำหนดเองด้วยรูปแบบรูปแบบของ“ M/D/YY H: MM” เซลล์ที่สองได้รับการกำหนดค่าวันที่และเวลาปัจจุบันและรูปแบบเซลล์ที่สร้างขึ้นใหม่จะถูกนำไปใช้กับมันโดยใช้เมธอด \ setcellstyle \ เซลล์ที่สาม (ดัชนี 2) แสดงวิธีทางเลือกในการเติมเซลล์ประเภทวันที่โดยใช้ \ java.util.calendar \ คล้ายกับเซลล์ที่สองรูปแบบเซลล์ที่กำหนดเองจะถูกนำไปใช้กับเซลล์นี้เช่นกัน

การทำงานกับเซลล์ประเภทต่าง ๆ

XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("new sheet");
Row row = sheet.createRow(2);
row.createCell(0).setCellValue(1.1);
row.createCell(1).setCellValue(new Date());
row.createCell(2).setCellValue(Calendar.getInstance());
row.createCell(3).setCellValue("a string");
row.createCell(4).setCellValue(true);
row.createCell(5).setCellType(CellType.ERROR);		// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}

ในตัวอย่างรหัสนี้รูปแบบเซลล์ที่แตกต่างกันจะถูกนำไปใช้กับเซลล์ในไฟล์ excel โดยใช้ Apache Poi API ตามที่อธิบายไว้ในขั้นตอนต่อไปนี้

  1. แถวถูกสร้างขึ้นที่ดัชนี 2 บนแผ่นงานโดยใช้ \ **createrow** (2) \ เซลล์จะถูกเติมภายในแถวนี้พร้อมข้อมูลต่อไปนี้
  2. เซลล์แรก (ดัชนี 0) ได้รับการกำหนดค่าทศนิยม 1.1 โดยใช้เมธอด \ **setCellValue** \
  3. ในเซลล์ที่สอง (ดัชนี 1) วันที่และเวลาปัจจุบันจะถูกแทรกโดยใช้วัตถุ \ วันที่ \ ผ่านวิธี \ **setCellValue** \ เมธอด
  4. เซลล์ที่สาม (ดัชนี 2) มีวันที่และเวลาจากอินสแตนซ์ \ ปฏิทิน \ ตั้งค่าโดยใช้วิธี \ **setCellValue** \ เมธอด
  5. เซลล์ที่สี่ (ดัชนี 3) ถือข้อความ“ สตริง”
  6. เซลล์ที่ห้า (ดัชนี 4) ถูกกำหนดไว้สำหรับค่าบูลีน“ จริง”
  7. การเลื่อนไปข้างหน้าประเภทเซลล์เฉพาะถูกกำหนดให้กับเซลล์ที่หก (ดัชนี 5) โดยการเรียกใช้เมธอด \ **setCellType** \ เซลล์นี้ได้รับการกำหนดค่าเป็นเซลล์ข้อผิดพลาดโดยใช้ \ **celltype.error** \ การแจงนับซึ่งบ่งชี้ว่าจะแสดงค่าข้อผิดพลาด ในที่สุดสมุดงานที่ได้รับการแก้ไขจะถูกเขียนไปยังไฟล์ชื่อ“ workbook.xlsx” โดยใช้ \ **fileoutputStream** \ โดยสรุปตัวอย่างรหัสนี้แสดงให้เห็นถึงวิธีการสร้างสมุดงาน Excel ใช้รูปแบบเซลล์ที่แตกต่างกันเพื่อรองรับชนิดข้อมูลที่หลากหลายและในที่สุดบันทึกสมุดงานที่แก้ไขไว้ในไฟล์ ภาพประกอบที่ใช้งานได้จริงนี้แสดงให้เห็นถึงความสามารถของไลบรารี Apache Poi สำหรับการทำงานกับไฟล์ Excel ใน Java

การตั้งค่าลักษณะของเซลล์

XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("new sheet");
// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow(1);
// Aqua background
CellStyle style = wb.createCellStyle();
style.setFillBackgroundColor(IndexedColors.AQUA.getIndex());
style.setFillPattern(FillPatternType.BIG_SPOTS);
Cell cell = row.createCell(1);
cell.setCellValue("X");
cell.setCellStyle(style);
// Orange "foreground", foreground being the fill foreground not the font color.
style = wb.createCellStyle();
style.setFillForegroundColor(IndexedColors.ORANGE.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell = row.createCell(2);
cell.setCellValue("X");
cell.setCellStyle(style);
// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}
wb.close();

ข้อมูลตัวอย่างรหัสนี้แสดงให้เห็นถึงวิธีการจัดการการปรากฏตัวของเซลล์ในไฟล์ excel โดยใช้ไลบรารี Apache Poi ใน Java นี่คือความสำเร็จโดยใช้ขั้นตอนต่อไปนี้

  1. แถวถูกสร้างขึ้นที่ดัชนี 1 บนแผ่นงานโดยใช้ \ createrow (1) \ การเปลี่ยนแปลงต่อไปนี้เกิดขึ้นกับเซลล์ภายในแถวนี้
  2. สำหรับเซลล์แรก (ดัชนี 1) รูปแบบเซลล์ที่กำหนดเองถูกสร้างขึ้นโดยใช้ \ wb.createCellstyle () \ สไตล์นี้ได้รับการกำหนดค่าด้วยสีพื้นหลังน้ำโดยใช้ \ setFillbackgroundColor \ และ \ indexedColors.aqua.getIndex () \ รูปแบบสำหรับพื้นหลังถูกตั้งค่าเป็น“ จุดใหญ่” โดยใช้ \ setFillPattern (fillpatterntype.big_spots) \ เซลล์ถูกสร้างขึ้นในแถวนี้ที่ดัชนี 1 และเต็มไปด้วยค่า“ x” สไตล์ที่สร้างขึ้นก่อนหน้านี้ใช้กับเซลล์นี้โดยใช้ \ setcellstyle \
  3. สำหรับเซลล์ที่สอง (ดัชนี 2) รูปแบบเซลล์ใหม่ถูกสร้างขึ้น รูปแบบนี้ได้รับการออกแบบด้วยสีส้มเบื้องหน้าโดยใช้ \ setfillforegroundColor \ และ \ indexedColors.orange.getIndex () \ รูปแบบการเติมถูกตั้งค่าเป็น“ เบื้องหน้าที่เป็นของแข็ง” โดยใช้ \ setFillpattern (Fillpatterntype.solid_foreground) \ เซลล์อื่นถูกสร้างขึ้นที่ดัชนี 2 ในแถวเดียวกันและเติมด้วยค่า“ x” สไตล์ที่สร้างขึ้นใหม่จะถูกกำหนดให้กับเซลล์นี้โดยใช้ \ setcellstyle \ หลังจากกำหนดค่าการปรากฏตัวของเซลล์แล้วสมุดงานที่แก้ไขจะถูกเขียนไปยังไฟล์ชื่อ“ workbook.xlsx” โดยใช้ \ fileOutputStream \ โดยสรุปตัวอย่างรหัสนี้แสดงวิธีการใช้ไลบรารี Apache Poi เพื่อจัดการการปรากฏตัวของเซลล์ในไฟล์ Excel เทคนิคการสาธิตเกี่ยวข้องกับการสร้างรูปแบบเซลล์ที่กำหนดเองเพื่อควบคุมพื้นหลังและสีเบื้องหน้ารวมถึงรูปแบบการเติมให้ความยืดหยุ่นในการปรับแต่งสเปรดชีต Excel ด้วยสายตาโดยใช้ Java

บทสรุป

ในตัวอย่าง Java ข้างต้นทั้งหมดสำหรับ Apache Poi Library เราได้สาธิตวิธีการทำงานกับเนื้อหาไฟล์ Excel จากภายในแอปพลิเคชัน Java ของคุณ ตัวอย่างโค้ดแสดงวิธีการสร้างเซลล์ในไฟล์ excel ตั้งค่าลักษณะที่ปรากฏของเหล่านี้ตั้งค่าสไตล์เซลล์เป็นประเภทข้อมูลที่แตกต่างกันเช่นสตริงตัวเลขทศนิยม ฯลฯ และวิธีการตั้งค่าประเภทเซลล์ถึงวันที่ เราจะเพิ่มตัวอย่างเพิ่มเติมสำหรับการทำงานกับไฟล์ Excel โดยใช้ Apache Poi สำหรับ Java ดังนั้นคอยติดตาม

ดูเพิ่มเติม