package com.andy.jacob;
002
003 import java.io.File;
004 import java.sql.ResultSet;
005 import java.sql.ResultSetMetaData;
006 import java.sql.SQLException;
007 import java.util.ArrayList;
008 import java.util.List;
009
010 import com.andy.db.DBUtil;
011 import com.jacob.com.ComThread;
012
013
014 public class ReadOracleToWard {
015
016 private DBUtil dbUtil = null;
017 // 表格列名数组
018 private String colNames[] = null;
019 // 表格value值
020 private List colValuesList = null;
021
022 private Inerttable inerttable = null;
023
024
025 public void writeColNames(String colNames[]) {
026 for (int i = 0; i < colNames.length; i++) {
027 inerttable.putTxtToCell(1, 1, (i + 1), colNames[i]);
028 }
029 }
030
031
032 public void writeColValues(List colValuesList) {
033 String[] colValues = null;
034 int row = 2;
035 for (int i = 0; i < colValuesList.size(); i++) {
036 colValues = colValuesList.get(i);
037 for (int k = 0; k < colValues.length; k++) {
038 inerttable.putTxtToCell(1, row, (k + 1), colValues[k]);
039 }
040 row++;
041 }
042 }
043
044
045 public ResultSet getResultSet(String tableName) {
046 dbUtil = new DBUtil();
047 String sql = "select * from " + tableName;
048 ResultSet rs = null;
049
050 dbUtil.findConnection();
051 dbUtil.findPreparedStatement(sql);
052 rs = dbUtil.queryDB(sql);
053 System.out.println("getResultSet : rs : " + rs);
054 return rs;
055 }
056
057
058 public String[] getColNames(ResultSet rs) throws SQLException {
059 System.out.println("getResultSet : rs : " + rs);
060 ResultSetMetaData rsmd = null;
061 if (rs != null) {
062 rsmd = rs.getMetaData();
063 int count = rsmd.getColumnCount();
064
065 colNames = new String[count];
066
067 for (int i = 0; i < count; i++) {
068 colNames[i] = rsmd.getColumnName(i + 1);
069 }
070 } else {
071 colNames = new String[] {};
072 }
073 return colNames;
074 }
075
076
077 public List getColValuesList(ResultSet rs) throws SQLException {
078 colValuesList = new ArrayList();
079 System.out.println("getResultSet : rs : " + rs);
080 ResultSetMetaData rsmd = null;
081 if (rs != null) {
082 rsmd = rs.getMetaData();
083 int count = rsmd.getColumnCount();
084 String[] colValues = null;
085
086 while (rs.next()) {
087 colValues = new String[count];
088 for (int i = 0; i < count; i++) {
089 String value = rs.getString(i + 1);
090 // 将 数据库中的 null 转化为"null",避免在转化格式时出错
091 if (value == null || "".equals(value)) {
092 value = "null";
093 }
094 colValues[i] = value;
095 }
096 colValuesList.add(colValues);
097 }
098 }
099 return colValuesList;
100 }
101
102
103 public void writeToWord(String tableName) {
104 try {
105 long begin = System.currentTimeMillis();
106 ResultSet rs = getResultSet(tableName);
107 getColNames(rs);
108 getColValuesList(rs);
109
110 ComThread.InitSTA();
111 inerttable = new Inerttable();
112 inerttable.createNewDocument();
113 inerttable.createTable(colNames.length, colValuesList.size() + 1);
114
115 writeColNames(colNames);
116 writeColValues(colValuesList);
117
118 String docPath = getLocationPath(tableName);
119 inerttable.save(docPath);
120 ComThread.Release();
121
122 long end = System.currentTimeMillis();
123 System.out.println("用时:" + String.valueOf(end - begin));
124 } catch (Exception e) {
125 // TODO: handle exception
126 System.out.println("异常:" + e.getMessage());
127 } finally {
128 dbUtil.closeResource();
129 }
130 }
131
132
133 public String getLocationPath(String tableName) {
134 // 生成文件路径(在本项目src下)
135 File f = new File(".");
136 f = new File(f, "src/com/andy/jacob");
137
138 if (!f.exists()) {
139 f.mkdirs();
140 }
141 f = new File(f, tableName + ".docx");
142 return f.getAbsolutePath();
143 }
144
145 public static void main(String[] args) {
146 ReadOracleToWard toWard = new ReadOracleToWard();
147 String tableName = "andy_blob";
148 toWard.writeToWord(tableName);
149 }
150 }
此文档是别人写的!我拷贝下来的,方便以后观看!请勿怪!
分享到:
相关推荐
Jacob库的使用是为了在Java环境中操作Word文档。它通过JNI桥接,调用Windows平台上的COM接口来控制Microsoft Word。例如,开发者可以创建一个新的Word文档,插入文本、图片,设置样式,甚至执行复杂的布局操作。在这...
4. 数据迁移:从旧的数据库或文件系统迁移到新的系统时,可以通过JACOB读取并处理Office文档中的数据。 总结,JACOB作为一个连接Java与COM的强大工具,为开发者提供了灵活的接口,使得在Java平台上操作Windows应用...
- **自动化Office文档处理**:使用Jacob,你可以编写Java程序来创建、编辑和保存Word文档、Excel电子表格或PowerPoint演示文稿。 - **系统管理**:可以通过Jacob访问Windows注册表,或者控制打印机、网络共享等系统...
1. **环境配置**:首先需要在系统路径中包含Jacob的动态链接库文件(jacob.dll),同时将对应的jar包添加到Java项目的类路径中。 2. **导入Jacob库**:在Java代码中,通过`import com.jacob.*;`引入Jacob库。 3. *...
下面是一个具体的示例代码,展示了如何使用Java和Jacob将Word文档转换为HTML格式: ```java package com; import com.jacob.com.*; import com.jacob.activeX.*; public class WordtoHtml { /** * 将Word文档...
1. **Office自动化**:Jacob常用于自动化处理Word、Excel、PowerPoint等Microsoft Office文档,进行数据导入导出、格式转换、报表生成等工作。 2. **ActiveX控件**:通过Jacob,Java应用可以与网页中的ActiveX控件...
- 数据导入导出:例如,从数据库中提取数据并格式化为Word文档,或者将Word文档中的表格数据导入到数据库。 - 文档批处理:例如,批量更改文档的页眉、页脚、样式等。 **标签:“源码 工具”**: - **源码**:...
使用Jacob,你可以构建自动化报告生成系统,将数据从数据库或其他来源导入到Excel,自动生成图表,然后将这些内容合并到Word模板中,形成最终的报告。例如,可以动态调整图表大小,根据数据更新表格内容,然后在...
- 数据导入导出:在企业级应用中,经常需要将大量数据导入到数据库,或者将数据库中的数据导出为Excel报表,Jacob可以简化这一过程。 - 报表生成:通过调用Excel的COM接口,Jacob可以自动生成复杂格式的报表,甚至...
1. **自动化办公文档处理**:Jacob可以调用Microsoft Office的COM接口,创建、读取和修改Word文档、Excel电子表格,实现办公文档的自动化处理。 2. **数据导入导出**:利用Jacob与Excel的集成,可以便捷地将大量...
在Jacob-1.17-M4中,可能包含了一个或多个DLL文件,这些文件是Jacob与Windows操作系统通信的桥梁,允许Java应用程序利用COM接口执行例如创建、修改和导出Word文档等操作。 在描述中提到的“jar包”,即Java Archive...
- 自动化办公文档处理:创建、读取、编辑和保存Excel、Word文档。 - 数据导出:将数据库数据导出为Excel格式报表。 - 打印服务:控制打印机进行批量打印任务。 - 图形图像处理:利用Windows图形设备接口(GDI+)进行...
通过JACOB,开发者可以在Java环境中编写代码,而这些代码可以透明地访问Windows系统中的COM组件,例如Excel、Word、数据库驱动等。 JACOB的使用步骤大致如下: 1. **安装和配置**:首先,需要下载JACOB的库文件,...
- **自动化办公文档处理**:可以创建、修改和读取Microsoft Office文档,如Word文档、Excel表格。 - **数据导入导出**:与数据库或其他应用程序交换数据,如通过Excel进行数据导入和导出。 - **控制硬件设备**:...
2. **数据迁移和整合**:Jacob可以用来从Office应用中提取数据,将其与其他系统集成,比如将Excel数据导入数据库。 3. **测试工具**:在自动化测试中,Jacob可以模拟用户对Office软件的操作,用于功能测试和性能...
- Office自动化:例如,使用Jacob可以方便地控制Word、Excel进行文档处理。 - 数据库访问:通过调用ADO.NET等COM组件,实现对数据库的操作。 - Windows系统服务:如系统设置修改、硬件设备控制等。 - 第三方软件...
1. **自动化办公软件**:如使用Jacob调用Microsoft Office接口,实现Java程序对Word、Excel等文档的自动化操作,进行数据导入导出、格式转换等任务。 2. **系统集成**:Java应用程序可以通过Jacob与各种Windows特定...
Jacob广泛应用于需要在Java程序中处理Office文档的场景,比如自动化报表生成、数据导出导入等。此外,对于任何其他可以通过COM接口访问的Windows应用程序或服务,如打印机设置、数据库连接等,Jacob都能提供便捷的...
1. **导入 JCOM 类库**:在 Java 项目中,需要导入 JCOM 提供的类库,例如 `com.jacob.activeX.ActiveXComponent`,这个类是与 COM 组件交互的主要入口。 2. **创建 ActiveXComponent 对象**:使用 `...
3. 需要动态生成指定格式的Word文档的; 4. 需要把html页面中表格导出到excel的; 5. 需要在html页面中套打票据、报表的; 6. 需要在html页面中显示复杂报表,并要求精确打印预览及打印的; 7. 需要动态生成中国式...