Phần 1: Tạo file Word đơn giản
Bước 1: Tạo một Project trong NetBean và tạo một class “TaoFileWord.java” trong package demo
Bước 2: Add các gói thư viện sau vào project:
- poi-ooxml-3.17.jar
- poi-ooxml-schemas-3.17.jar
- poi-3.17.jar
- xmlbeans-2.6.0.jar
Cấu trúc Project sẽ như sau:
Bước 3: Thêm hàm main vào class TaoFileWord và sử dụng đối tượng của lớp “XWPFDocument” để ghi kết quả ra một file word, lần lượt theo các bước sau:
package demo;
import java.io.FileOutputStream; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; 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;
/** * * @author HAITHANH */ public class TaoFileWord {
public static void main(String[] args) { try { //Bước 1: Khởi tạo đối tượng để sinh ra file word XWPFDocument document = new XWPFDocument();
//Bước 2: Tạo tiêu đề bài viết XWPFParagraph titleGraph = document.createParagraph(); titleGraph.setAlignment(ParagraphAlignment.CENTER); String title = "TIỂU SỬ HỒ CHÍ MINH"; XWPFRun titleRun = titleGraph.createRun(); titleRun.setBold(true); titleRun.setText(title);
//Bước 3: Tạo đoạn văn bản 1 trong tài liệu XWPFParagraph para1 = document.createParagraph(); para1.setAlignment(ParagraphAlignment.BOTH); String dataPara1 = "Hồ Chí Minh (19 tháng 5 năm 1890 – 2 tháng 9 năm 1969)"; dataPara1 +=" tên khai sinh: Nguyễn Sinh Cung, là nhà cách mạng, người sáng"; dataPara1 +=" lập Đảng Cộng sản Việt Nam, một trong những người đặt nền móng"; dataPara1 +=" và lãnh đạo công cuộc đấu tranh giành độc lập, toàn vẹn lãnh thổ"; dataPara1 +=" cho Việt Nam trong thế kỷ 20, một chiến sĩ cộng sản quốc tế."; dataPara1 +=" Ông là người viết và đọc bản Tuyên ngôn Độc lập Việt Nam khai sinh"; dataPara1 +=" nước Việt Nam Dân chủ Cộng hòa ngày 2 tháng 9 năm 1945 tại quảng"; dataPara1 +=" trường Ba Đình, Hà Nội, là Chủ tịch nước Việt Nam Dân chủ Cộng hòa"; dataPara1 +=" trong thời gian 1945 – 1969, Chủ tịch Ban Chấp hành Trung ương Đảng"; dataPara1 +=" Lao động Việt Nam trong thời gian 1951 – 1969."; XWPFRun para1Run = para1.createRun(); para1Run.setText(dataPara1);
//Bước 4: Ghi dữ liệu ra file word FileOutputStream out = new FileOutputStream("src/demo/data.docx"); document.write(out); out.close(); document.close(); } catch (IOException ex) { Logger.getLogger(TaoFileWord.class.getName()).log(Level.SEVERE, null, ex); } } } |
Sau khi chạy chương trình chúng ta sẽ tạo được nội dung của file word như sau:
Phần 2: Tạo một file word có Border cho nội dung hiển thị:
Sử dụng code như các bước dưới đây để tạo border cho các paragraph hiển thị
package demo;
import java.io.FileOutputStream; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import org.apache.poi.xwpf.usermodel.Borders; 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;
/** * * @author HAITHANH */ public class TaoFileWordCoParagraph {
public static void main(String[] args) { try { //Bước 1: Khởi tạo đối tượng để sinh ra file word XWPFDocument document = new XWPFDocument();
//Bước 2: Tạo tiêu đề bài viết XWPFParagraph titleGraph = document.createParagraph(); titleGraph.setAlignment(ParagraphAlignment.CENTER); String title = "TẠO BORDER CHO NỘI DUNG HIỂN THỊ"; XWPFRun titleRun = titleGraph.createRun(); titleRun.setBold(true); titleRun.setText(title);
//Bước 3: Tạo đoạn văn bản 1 trong tài liệu: XWPFParagraph para1 = document.createParagraph(); para1.setAlignment(ParagraphAlignment.LEFT);
//Tạo border cho paragraph 1 para1.setBorderBottom(Borders.BASIC_BLACK_DASHES); para1.setBorderLeft(Borders.BASIC_BLACK_DASHES); para1.setBorderRight(Borders.BASIC_BLACK_DASHES); para1.setBorderTop(Borders.BASIC_BLACK_DASHES);
XWPFRun para1Run = para1.createRun(); para1Run.setText("Đoạn văn bản 1"); para1Run.addBreak(); para1Run.setText("Nội dung của đoạn văn bản 1");
//Bước 4: Tạo khoảng cách giữa paragraph 1 và paragraph 2 XWPFParagraph paraBreak1 = document.createParagraph(); XWPFRun runBreak1 = paraBreak1.createRun(); runBreak1.addBreak();
//Bước 5: Tạo đoạn văn bản 2: XWPFParagraph para2 = document.createParagraph(); para2.setAlignment(ParagraphAlignment.LEFT);
//Tạo border cho paragraph 2 para2.setBorderBottom(Borders.BASIC_BLACK_DASHES); para2.setBorderLeft(Borders.BASIC_BLACK_DASHES); para2.setBorderRight(Borders.BASIC_BLACK_DASHES); para2.setBorderTop(Borders.BASIC_BLACK_DASHES);
XWPFRun para2Run = para2.createRun(); para2Run.setText("Đoạn văn bản 2"); para2Run.addBreak(); para2Run.setText("Nội dung của đoạn văn bản 2");
//Bước 6: Tạo khoảng cách giữa paragraph 2 và paragraph 3 XWPFParagraph paraBreak2 = document.createParagraph(); XWPFRun runBreak2 = paraBreak2.createRun(); runBreak2.addBreak();
//Bước 7: Tạo đoạn văn bản 3: XWPFParagraph para3 = document.createParagraph(); para3.setAlignment(ParagraphAlignment.LEFT);
//Tạo border cho paragraph 3 para3.setBorderBottom(Borders.BASIC_BLACK_DASHES); para3.setBorderLeft(Borders.BASIC_BLACK_DASHES); para3.setBorderRight(Borders.BASIC_BLACK_DASHES); para3.setBorderTop(Borders.BASIC_BLACK_DASHES);
XWPFRun para3Run = para3.createRun(); para3Run.setText("Đoạn văn bản 3"); para3Run.addBreak(); para3Run.setText("Nội dung của đoạn văn bản 3");
//Bước 8: Ghi dữ liệu ra file word FileOutputStream out = new FileOutputStream("src/demo/data.docx"); document.write(out); out.close(); document.close(); } catch (IOException ex) { Logger.getLogger(TaoFileWordCoParagraph.class.getName()).log(Level.SEVERE, null, ex); } } } |
Khi chạy chương trình chúng ta được kết quả sau:
Như vậy nhờ các gói thư viện được cung cấp, bạn đã có thể dễ dàng tạo được nội dung báo cáo qua các file word được sinh ra. Khi muốn hiển thị nội dung theo một cách nào trong file word, bạn chỉ cần tìm hiểu xem phương thức của lớp nào hỗ trợ cách tạo ra kiểu đó mà thôi.