Java Generate Word Document Report from Database (POI) |
Java Generate Word Document Report from Database (POI) บทความนี้จะเป็นการสร้าง Word Report ด้วย Java และ Library ของ POI ซึ่งข้อมูลของ Report จะทำการอ่านมาจาก Database ส่วนวิธีการนั้นก็คือ จะทำการอ่านข้อมูลมาจาก Database และหลังจากที่ได้ข้อมูลจาก Database แล้วเราจะใช้การ Loop เพื่อเขียนลงในไฟล์ Word ซึ่งจะเป็นการ Apply การใช้งานจากบทความก่อน ๆ
Java Generate Word Document Report from Database (POI)
Example Word Document Report
Example ตัวอย่างการสร้าง Excel Report ที่ข้อมูลถูกส่งออกมาจาก Database
MySQL Database
CREATE TABLE `customer` (
`CustomerID` varchar(4) NOT NULL,
`Name` varchar(50) NOT NULL,
`Email` varchar(50) NOT NULL,
`CountryCode` varchar(2) NOT NULL,
`Budget` double NOT NULL,
`Used` double NOT NULL,
PRIMARY KEY (`CustomerID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- dump ตาราง `customer`
--
INSERT INTO `customer` VALUES ('C001', 'Win Weerachai', '[email protected]', 'TH', 1000000, 600000);
INSERT INTO `customer` VALUES ('C002', 'John Smith', '[email protected]', 'UK', 2000000, 800000);
INSERT INTO `customer` VALUES ('C003', 'Jame Born', '[email protected]', 'US', 3000000, 600000);
INSERT INTO `customer` VALUES ('C004', 'Chalee Angel', '[email protected]', 'US', 4000000, 100000);
โครงสร้างของ MySQL Database
โครงสร้างของ MySQL Database
MyClass.java
package com.java.myapp;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
public class MyClass {
public static void main(String[] args) {
try{
//*** Connect Database ***//
Connection connect = null;
Statement s = null;
Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager.getConnection("jdbc:mysql://localhost/mydatabase" +
"?user=root&password=root");
s = connect.createStatement();
String sql = "SELECT * FROM customer ORDER BY CustomerID ASC";
ResultSet rec = s.executeQuery(sql);
//*** Word Document ***//
String fileName = "C:\\java\\myWord.doc";
XWPFDocument doc = new XWPFDocument();
XWPFParagraph para1 = doc.createParagraph();
para1.setAlignment(ParagraphAlignment.CENTER);
XWPFRun run = para1.createRun();
run.setBold(true);
run.setFontSize(30);
run.setText("ThaiCreate.Com");
XWPFTable tab = doc.createTable();
XWPFTableRow row = tab.getRow(0);
row.getCell(0).setText("CustomerID");
row.addNewTableCell().setText("Name");
row.addNewTableCell().setText("Email");
row.addNewTableCell().setText("CountryCode");
row.addNewTableCell().setText("Budget");
row.addNewTableCell().setText("Used");
while((rec!=null) && (rec.next()))
{
row = tab.createRow();
row.getCell(0).setText(rec.getString("CustomerID"));
row.getCell(1).setText(rec.getString("Name"));
row.getCell(2).setText(rec.getString("Email"));
row.getCell(3).setText(rec.getString("CountryCode"));
row.getCell(4).setText(rec.getString("Budget"));
row.getCell(5).setText(rec.getString("Used"));
}
doc.createParagraph().createRun().addBreak();
XWPFParagraph para2 = doc.createParagraph();
XWPFRun run2 = para2.createRun();
run2.setText("By...mr.win");
run2.setTextPosition(100);
doc.write(new FileOutputStream(fileName));
// Close
try {
if(connect != null){
s.close();
connect.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Word document created.");
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Output
ไฟล์ Word ที่ได้
ผลลัพธ์ของ Word Document ที่ถูกส่งออกมาจาก Database ที่ถูกจัดรูปแบบให้อยู่ใน Table
|