Apache POI - สเปรดชีต
บทนี้จะอธิบายวิธีสร้างสเปรดชีตและจัดการโดยใช้ Java สเปรดชีตคือหน้าในไฟล์ Excel ประกอบด้วยแถวและคอลัมน์ที่มีชื่อเฉพาะ
หลังจากจบบทนี้แล้วคุณจะสามารถสร้างสเปรดชีตและดำเนินการอ่านได้
สร้างสเปรดชีต
ก่อนอื่นให้เราสร้างสเปรดชีตโดยใช้ชั้นเรียนอ้างอิงที่กล่าวถึงในบทก่อนหน้านี้ โดยทำตามบทก่อนหน้าให้สร้างสมุดงานก่อนจากนั้นเราสามารถดำเนินการต่อและสร้างแผ่นงานได้
ข้อมูลโค้ดต่อไปนี้ใช้เพื่อสร้างสเปรดชีต
//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");
แถวบนสเปรดชีต
สเปรดชีตมีเค้าโครงตาราง แถวและคอลัมน์ถูกระบุด้วยชื่อเฉพาะ คอลัมน์จะระบุด้วยตัวอักษรและแถวด้วยตัวเลข
ข้อมูลโค้ดต่อไปนี้ใช้เพื่อสร้างแถว
XSSFRow row = spreadsheet.createRow((short)1);
เขียนลงในสเปรดชีต
ให้เราพิจารณาตัวอย่างของข้อมูลพนักงาน ข้อมูลพนักงานจะได้รับในรูปแบบตาราง
รหัส Emp | ชื่อ Emp | การกำหนด |
---|---|---|
Tp01 | โกปาล | ผู้จัดการฝ่ายเทคนิค |
TP02 | มานิชา | เครื่องอ่านหลักฐาน |
Tp03 | มาธาน | นักเขียนด้านเทคนิค |
Tp04 | Satish | นักเขียนด้านเทคนิค |
Tp05 | กฤษณะ | นักเขียนด้านเทคนิค |
รหัสต่อไปนี้ใช้เพื่อเขียนข้อมูลข้างต้นลงในสเปรดชีต
import java.io.File;
import java.io.FileOutputStream;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Writesheet {
public static void main(String[] args) throws Exception {
//Create blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create a blank sheet
XSSFSheet spreadsheet = workbook.createSheet(" Employee Info ");
//Create row object
XSSFRow row;
//This data needs to be written (Object[])
Map < String, Object[] > empinfo =
new TreeMap < String, Object[] >();
empinfo.put( "1", new Object[] { "EMP ID", "EMP NAME", "DESIGNATION" });
empinfo.put( "2", new Object[] { "tp01", "Gopal", "Technical Manager" });
empinfo.put( "3", new Object[] { "tp02", "Manisha", "Proof Reader" });
empinfo.put( "4", new Object[] { "tp03", "Masthan", "Technical Writer" });
empinfo.put( "5", new Object[] { "tp04", "Satish", "Technical Writer" });
empinfo.put( "6", new Object[] { "tp05", "Krishna", "Technical Writer" });
//Iterate over data and write to sheet
Set < String > keyid = empinfo.keySet();
int rowid = 0;
for (String key : keyid) {
row = spreadsheet.createRow(rowid++);
Object [] objectArr = empinfo.get(key);
int cellid = 0;
for (Object obj : objectArr) {
Cell cell = row.createCell(cellid++);
cell.setCellValue((String)obj);
}
}
//Write the workbook in file system
FileOutputStream out = new FileOutputStream(new File("Writesheet.xlsx"));
workbook.write(out);
out.close();
System.out.println("Writesheet.xlsx written successfully");
}
}
บันทึกโค้ด Java ด้านบนเป็น Writesheet.javaแล้วคอมไพล์และเรียกใช้จากพรอมต์คำสั่งดังนี้ -
$javac Writesheet.java
$java Writesheet
มันจะรวบรวมและดำเนินการเพื่อสร้างไฟล์ Excel ชื่อ Writesheet.xlsx ในไดเร็กทอรีปัจจุบันของคุณและคุณจะได้รับผลลัพธ์ต่อไปนี้ในพรอมต์คำสั่ง
Writesheet.xlsx written successfully
Writesheet.xlsx ไฟล์มีลักษณะดังนี้
อ่านจากสเปรดชีต
ให้เราพิจารณาไฟล์ excel ด้านบนที่ชื่อ Writesheet.xslxเป็นอินพุต สังเกตรหัสต่อไปนี้ ใช้สำหรับอ่านข้อมูลจากสเปรดชีต
import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Readsheet {
static XSSFRow row;
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream(new File("WriteSheet.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet spreadsheet = workbook.getSheetAt(0);
Iterator < Row > rowIterator = spreadsheet.iterator();
while (rowIterator.hasNext()) {
row = (XSSFRow) rowIterator.next();
Iterator < Cell > cellIterator = row.cellIterator();
while ( cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() + " \t\t ");
break;
case Cell.CELL_TYPE_STRING:
System.out.print(
cell.getStringCellValue() + " \t\t ");
break;
}
}
System.out.println();
}
fis.close();
}
}
ให้เราเก็บรหัสด้านบนไว้ Readsheet.java จากนั้นคอมไพล์และเรียกใช้จากพรอมต์คำสั่งดังต่อไปนี้ -
$javac Readsheet.java
$java Readsheet
หากสภาพแวดล้อมระบบของคุณถูกกำหนดค่าด้วยไลบรารี POI ระบบจะคอมไพล์และดำเนินการเพื่อสร้างเอาต์พุตต่อไปนี้ในพรอมต์คำสั่ง
EMP ID EMP NAME DESIGNATION
tp01 Gopal Technical Manager
tp02 Manisha Proof Reader
tp03 Masthan Technical Writer
tp04 Satish Technical Writer
tp05 Krishna Technical Writer