导出文件:使用lowagie.itext导出数据为Word文件
生活随笔
收集整理的這篇文章主要介紹了
导出文件:使用lowagie.itext导出数据为Word文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
背景
日常工作中,曾遇到過導出數據為 Word 的需求,這里做個簡單總結。
前面分別總結了導出數據為 PDF , Excel 的實現方式,有時候需要在導出文件后進行編輯,那么這時候僅僅導出 PDF 文件是不夠的。
下面的實戰是基于之前導出數據庫表結構為 Word 用到的,后面有 一鍵導出PostgreSQL數據庫表設計為word文檔 的實戰代碼鏈接。
涉及的技術有: SpringBoot 、 MyBatis 、 lowagie.itext 。
依賴
<!--輸出word包start--> <!-- https://mvnrepository.com/artifact/com.lowagie/itext --> <dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version> </dependency> <!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian --> <dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.lowagie/itext-rtf --> <dependency><groupId>com.lowagie</groupId><artifactId>itext-rtf</artifactId><version>2.1.7</version> </dependency> <!--輸出word包end-->核心導出接口
@Service public class DataSourceDetailServiceImpl implements DataSourceDetailService {@Autowiredprivate DataSourceMapper dataSourceMapper;@Overridepublic List<Map<String, Object>> getDataSourceDetail(String tableName) {return dataSourceMapper.getDataDetail(tableName);}@Overridepublic List<Map<String, Object>> getAllDataSourceName(String dbName) {return dataSourceMapper.getAllDataSourceName(dbName);}@Overridepublic void toWord(List<Map<String, Object>> listAll) throws FileNotFoundException, DocumentException {// 創建word文檔,并設置紙張的大小Document document = new Document(PageSize.A4);// 創建word文檔RtfWriter2.getInstance(document, new FileOutputStream("D:/data/dbDetail.doc"));document.open();// 設置文檔標題Paragraph ph = new Paragraph();Font f = new Font();Paragraph p = new Paragraph("數據庫表設計文檔", new Font(Font.NORMAL, 24, Font.BOLDITALIC, new Color(0, 0, 0)));p.setAlignment(1);document.add(p);ph.setFont(f);/* * 創建表格 通過查詢出來的表遍歷 */for (int i = 0; i < listAll.size(); i++) {// 表名String table_name = (String) listAll.get(i).get("table_name");// 表說明String table_comment = (String) listAll.get(i).get("table_comment");//獲取某張表的所有字段說明List<Map<String, Object>> list = this.getDataSourceDetail(table_name);//構建表說明String all = "" + (i + 1) + " 表名:" + table_name + " " + table_comment + ""; // String all = "" + " 表名:" + table_name + " " + table_comment + "";//創建有6列的表格Table table = new Table(6);document.add(new Paragraph(""));table.setBorderWidth(1);// table.setBorderColor(Color.BLACK);table.setPadding(0);table.setSpacing(0);/** 添加表頭的元素,并設置表頭背景的顏色*/Color chade = new Color(176, 196, 222);Cell cell = new Cell("序號");// 單元格 // cell.setBackgroundColor(chade);cell.setHeader(true);// cell.setColspan(3);//設置表格為三列// cell.setRowspan(3);//設置表格為三行table.addCell(cell);cell = new Cell("字段名");// 單元格 // cell.setBackgroundColor(chade);table.addCell(cell);cell = new Cell("類型");// 單元格 // cell.setBackgroundColor(chade);table.addCell(cell);cell = new Cell("是否為空");// 單元格 // cell.setBackgroundColor(chade);table.addCell(cell);cell = new Cell("主鍵");// 單元格 // cell.setBackgroundColor(chade);table.addCell(cell);cell = new Cell("字段說明");// 單元格 // cell.setBackgroundColor(chade);table.addCell(cell);table.endHeaders();// 表頭結束// 表格的主體,for (int k = 0; k < list.size(); k++) {//獲取某表每個字段的詳細說明String Field = (String) list.get(k).get("Field");String Type = (String) list.get(k).get("Type");String Null = (String) list.get(k).get("Null");String Key = (String) list.get(k).get("Key");String Comment = (String) list.get(k).get("Comment");table.addCell((k + 1) + "");table.addCell(Field);table.addCell(Type);table.addCell(Null);table.addCell(Key);table.addCell(Comment);}Paragraph pheae = new Paragraph(all);//寫入表說明document.add(pheae);//生成表格document.add(table);}document.close();} }導出效果
Source Code
完整源碼見 GitHub :https://github.com/heartsuit/db2word
If you have any questions or any bugs are found, please feel free to contact me.
Your comments and suggestions are welcome!
總結
以上是生活随笔為你收集整理的导出文件:使用lowagie.itext导出数据为Word文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WireShark抓包,may be c
- 下一篇: 如何在 Ubuntu 12.04 Ser