import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.Reader; import java.math.BigInteger; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xwpf.usermodel.BreakType; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFTable; import org.apache.poi.xwpf.usermodel.XWPFTableCell; import org.apache.poi.xwpf.usermodel.XWPFTableRow; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STShd; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalJc; public class POI_创建Oracle表文档_S4_Test { public static void main(String[] args) throws Exception { POI_创建Oracle表文档_S4_Test t = new POI_创建Oracle表文档_S4_Test(); t.createSimpleTableDocx("f:/saveFile/temp/sys_table_" + System.currentTimeMillis() + ".docx"); } public void createSimpleTableDocx(String savePath) throws Exception { XWPFDocument xdoc = new XWPFDocument(); OracleTableInfo_S3 s3 = new OracleTableInfo_S3(); List<List<String>> tableList = s3.getUserAllTable(); for (int i = 0, len = tableList.size(); i < len; i++) { List<String> tableInfo = tableList.get(i); System.out.println("-----------=" + tableInfo.get(0)); List<List<String>> tableColumnList = s3 .getTableColumnInfo(tableInfo.get(0)); createOracleTableInfo(xdoc, tableInfo, tableColumnList); addNewPage(xdoc, BreakType.COLUMN); } saveDocument(xdoc, savePath); } public void createOracleTableInfo(XWPFDocument xdoc, List<String> tableInfo, List<List<String>> tableColumnList) { XWPFTable xTable = xdoc.createTable(3 + tableColumnList.size(), 6); setTableWidth(xTable, "8000"); int[] colWidthArr = new int[] { 1500, 3000, 1200, 850, 600, 850 }; String[] colInfo = new String[] { "列名", "注释", "类型", "默认值", "空值", "主键" }; XWPFTableRow row = xTable.getRow(2); row.setHeight(380); createColumnTitle(row, colInfo, colWidthArr); row = xTable.getRow(0); row.setHeight(380); setRowCellText(row.getCell(0), "中文名称", colWidthArr[0], true, 3, "BFBFBF", STVerticalJc.CENTER, STJc.CENTER); setRowCellText(row.getCell(1), "", colWidthArr[1], false, 0, null, STVerticalJc.CENTER, STJc.CENTER); setRowCellText(row.getCell(2), "英文名称", colWidthArr[2], true, 3, "BFBFBF", STVerticalJc.CENTER, STJc.CENTER); setRowCellText(row.getCell(3), tableInfo.get(0), colWidthArr[3], false, 0, null, STVerticalJc.CENTER, STJc.CENTER); mergeCellsHorizontal(xTable, 0, 3, 5); row = xTable.getRow(1); row.setHeight(380); setRowCellText(row.getCell(0), "功能描述", colWidthArr[0], true, 3, "BFBFBF", STVerticalJc.CENTER, STJc.CENTER); setRowCellText(row.getCell(1), tableInfo.get(1), colWidthArr[1], false, 0, null, STVerticalJc.CENTER, STJc.LEFT); mergeCellsHorizontal(xTable, 1, 1, 5); for (int i = 0, len = tableColumnList.size(); i < len; i++) { row = xTable.getRow(3 + i); row.setHeight(380); List<String> columnList = tableColumnList.get(i); for (int j = 0, jlen = columnList.size(); j < jlen; j++) { setRowCellText(row.getCell(j), columnList.get(j), colWidthArr[j], false, 0, null, STVerticalJc.CENTER, STJc.CENTER); } } } public void createColumnTitle(XWPFTableRow row, String[] colInfo, int[] colWidthArr) { for (int i = 0, len = colInfo.length; i < len; i++) { setRowCellText(row.getCell(i), colInfo[i], colWidthArr[i], true, 3, "BFBFBF", STVerticalJc.CENTER, STJc.CENTER); } } // 设置单元格文字 public void setRowCellText(XWPFTableCell cell, String text, int width, boolean isShd, int shdValue, String shdColor, STVerticalJc.Enum jc, STJc.Enum stJc) { CTTc cttc = cell.getCTTc(); CTTcPr ctPr = cttc.isSetTcPr() ? cttc.getTcPr() : cttc.addNewTcPr(); CTShd ctshd = ctPr.isSetShd() ? ctPr.getShd() : ctPr.addNewShd(); CTTblWidth cTblWidth = ctPr.addNewTcW(); cTblWidth.setW(BigInteger.valueOf(width)); cTblWidth.setType(STTblWidth.Enum.forString("dxa")); if (isShd) { if (shdValue > 0 && shdValue <= 38) { ctshd.setVal(STShd.Enum.forInt(shdValue)); } if (shdColor != null) { ctshd.setColor(shdColor); } } ctPr.addNewVAlign().setVal(jc); cttc.getPList().get(0).addNewPPr().addNewJc().setVal(stJc); cell.setText(text); } // 跨列合并单元格 public void mergeCellsHorizontal(XWPFTable table, int row, int fromCell, int toCell) { for (int cellIndex = fromCell; cellIndex <= toCell; cellIndex++) { XWPFTableCell cell = table.getRow(row).getCell(cellIndex); if (cellIndex == fromCell) { // The first merged cell is set with RESTART merge value cell.getCTTc().addNewTcPr().addNewHMerge() .setVal(STMerge.RESTART); } else { // Cells which join (merge) the first one, are set with CONTINUE cell.getCTTc().addNewTcPr().addNewHMerge() .setVal(STMerge.CONTINUE); } } } public void setTableWidth(XWPFTable table, String width) { CTTbl ttbl = table.getCTTbl(); CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl .getTblPr(); CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr .addNewTblW(); CTJc cTJc = tblPr.addNewJc(); cTJc.setVal(STJc.Enum.forString("center")); tblWidth.setW(new BigInteger(width)); tblWidth.setType(STTblWidth.DXA); } public void addNewPage(XWPFDocument document, BreakType breakType) { XWPFParagraph xp = document.createParagraph(); xp.createRun().addBreak(breakType); } public void saveDocument(XWPFDocument document, String savePath) throws Exception { FileOutputStream fos = new FileOutputStream(savePath); document.write(fos); fos.close(); } } class OracleTableInfo_S3 { public List<List<String>> getUserAllTable() throws Exception { Connection conn = getOracleConnection(); String sql = "select table_name,comments from user_tab_comments"; PreparedStatement ps = null; ResultSet rs = null; ps = conn.prepareStatement(sql); rs = ps.executeQuery(); List<List<String>> tableList = new ArrayList<List<String>>(); while (rs.next()) { List<String> resultList = new ArrayList<String>(); resultList.add(rs.getString(1)); if (StringUtils.isNotBlank(rs.getString(2))) { resultList.add(rs.getString(2)); } else { resultList.add(""); } tableList.add(resultList); } closeConnection(rs, null, conn); return tableList; } public List<List<String>> getTableColumnInfo(String tableName) throws Exception { Connection conn = getOracleConnection(); String sql = "select a.column_name as column_name, b.comments,a.data_type || '(' || nvl(a.data_precision, a.data_length) || (case when a.data_scale > 0 then ',' || a.data_scale end) || ')' as data_type, a.data_default, a.nullable, (select decode(d.constraint_type, 'P','Y','') from all_constraints d, all_cons_columns c where d.constraint_type in ('P') and d.status = 'ENABLED' and d.constraint_name = c.constraint_name and d.owner = c.owner and c.column_name = a.column_name and c.table_name = a.table_name) as key_type from user_tab_columns a, user_col_comments b where a.column_name = b.column_name and a.table_name = b.table_name and b.table_name = upper('" + tableName + "')"; PreparedStatement ps = null; ResultSet rs = null; ps = conn.prepareStatement(sql); rs = ps.executeQuery(); Reader reader; List<List<String>> columnList = new ArrayList<List<String>>(); while (rs.next()) { List<String> resultList = new ArrayList<String>(); resultList.add(rs.getString(1)); resultList.add(rs.getString(2)); resultList.add(rs.getString(3)); reader = rs.getCharacterStream(4); if (reader != null) { BufferedReader br = new BufferedReader(reader); StringBuffer sb = new StringBuffer(); String temp; while ((temp = br.readLine()) != null) { sb.append(temp); } if (sb.length() > 0) { resultList.add(sb.toString()); } else { resultList.add(""); } } else { resultList.add(""); } resultList.add(rs.getString(5)); resultList.add(rs.getString(6)); columnList.add(resultList); } for (List<String> list : columnList) { System.out.println(list); } closeConnection(rs, null, conn); return columnList; } public void closeConnection(ResultSet rs, Statement statement, Connection conn) { try { if (rs != null) { rs.close(); } if (statement != null) { statement.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } public Connection getOracleConnection() { String driver = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@localhost:1521:xe";// 要操作的数据库名称 String username = "admin";// 数据库用户名 String password = "123456";// 密码 return getConnection(driver, url, username, password); } public Connection getConnection(String driver, String url, String userName, String passwd) { Connection conn = null; try { Class.forName(driver); conn = DriverManager.getConnection(url, userName, passwd); } catch (Exception e) { e.printStackTrace(); } return conn; } }
结果为:
相关推荐
4. 构建Word文档:可以使用Apache POI库来操作Word文档,将数据库结构信息插入到文档中,形成清晰的表格或列表。 5. 存储和导出:最后,将生成的Word文档保存到本地,供用户查看或分享。 这个项目可能已经封装了...
使用数据库链接 ,将Oracle或者Mysql数据库的表信息 展示在...生成数据字典,使用poi,形成有图片,表格,目录。字体等的word文档 ,其中使用了harry12800.tree2word项目。完整的项目jdk1.7.导入直接运行,有sample。
- POI可以用来创建、读取、更新Excel文件,并支持复杂的表格操作。 2. **Oracle JDBC驱动** - JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问。 - ...
以下代码示例展示了如何使用Apache POI创建一个Word表格并填充数据: ```java import org.apache.poi.xwpf.usermodel.*; public class WordTableWriter { public static void writeTableToWord(List<TableField> ...
在某些情况下,开发人员可能需要从Word文档中复制含有特定格式(如表格、图片、超链接等)的数据,然后粘贴到应用程序的数据库管理界面。由于Word的富文本格式与数据库中的纯文本或HTML格式不兼容,可能会导致粘贴...
Oracle官方网站上提供的`org.apache.poi.jar`包正是这个项目的二进制发行版,包含了处理Office文档所需的所有Java类和方法。 在Java开发中,Apache POI 提供了一套完整的API,使得开发者可以方便地读取、写入和修改...
以下是一个使用Apache POI创建Word表格的基本步骤: 1. 创建`XSSFWorkbook`对象代表Word文档。 2. 创建`XSSFSheet`对象代表工作表。 3. 创建`XSSFRow`对象代表表格行。 4. 在每一行中创建`XSSFCell`对象并设置内容...
Excel 2007是Microsoft Office系列中的一个电子表格软件,它使用XLSX格式来存储数据。为了实现Excel 2007文件的导出,我们需要使用POI库。 POI(Apache POI)是一个Java库,由Apache软件基金会提供,用于读取和写入...
这是一种常见的数据管理操作,用于将Excel表格中的数据转移到关系型数据库中,如MySQL、SQL Server或Oracle。这通常涉及到读取Excel文件,解析其内容,然后使用SQL语句插入到数据库表中。Python的pandas库、Java的...
使用Apache POI库,可以创建和编辑Word和Excel文件,将字段和字段说明以表格形式呈现,方便用户查看和打印。Excel特别适合于数据分析,Word则可用于创建更结构化的报告。 7. **安全性与权限管理**: 在生成和导出...
Apache POI提供了一套丰富的API,可以对Word文档进行操作,包括创建表格、插入文本、设置样式等。 【标签】"java jdk"表明这是关于Java语言和其开发工具包的讨论。Java是一种广泛使用的面向对象的编程语言,具有跨...
3. poi-3.9-20121203.jar:Apache POI主库,提供对Excel、Word、PowerPoint等文件格式的支持。 4. poi-scratchpad-3.9-20121203.jar:POI的实验模块,包含一些未成熟或仍在开发的功能。 5. poi-ooxml-3.9-20121203....
1. **ooxml-schemas-1.1.jar**:这个库包含了Microsoft Office Open XML (OOXML) 的XML模式定义,主要用于解析和生成OOXML格式的文件,如Word文档、Excel表格和PowerPoint演示文稿。在处理与Office文档交互的场景中...
SOAOffice 完全抛弃了传统利用Office服务器端自动化技术存取文档数据的种种弊端和缺陷,采用独创的专利技术构建了一个功能强大、简单易用的微软Office中间件平台,平台提供标准的.net和java组件接口,不但能够在线...
本篇主要介绍如何利用Oracle Application Development Framework (ADF)结合Apache POI库实现Excel文件的导出功能。通过分析提供的代码片段,我们将详细了解其实现机制,并探讨关键类和方法的作用。 #### 核心概念 ...
这意味着在实现功能前,你需要在数据库中创建对应的表格结构,以存储要导出的数据。确保表格的字段与FreeMarker模板中使用的变量相匹配。 5. **FreeMarker模板设计**: 在FreeMarker模板文件(可能命名为`export....
2. poi-ooxml-schemas-3.8-beta3-20110606.jar、xmlbeans-2.3.0.jar:Apache POI项目提供的库,用于读写Microsoft Office格式的文件,如Excel、Word。这些jar包允许你在Spring Web应用中处理和生成Excel表格数据。 ...
在IT领域,掌握如何使用Word或其他办公软件创建可填写表单是非常实用的技能。此外,对于开发者来说,了解如何利用APIs或SDKs在程序中生成这些表单也非常重要。 ### 数据处理与存储 3. **数据采集**:此推荐表用于...
10. **Apache POI**: poi-xxx.jar是用于处理Microsoft Office文档(如Excel、Word)的库,可以在Java程序中读写Excel表格,创建Word文档等。 11. **Google Guava**: guava.jar是Google提供的一个强大的Java库,包含...