请教:java从数据库获取数据导出docx,有多个表格,请问怎么导出?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教:java从数据库获取数据导出docx,有多个表格,请问怎么导出?相关的知识,希望对你有一定的参考价值。
一条sql语句获取到的数据要分开放入多个表格,请问怎么进行表格的自增,并且准确的把数据放入对应的表格中,直接替换文本的方式试过了。
参考技术A 第一步:如何用POI操作Excel@Test
public void createXls() throws Exception
//声明一个工作薄
HSSFWorkbook wb = new HSSFWorkbook();
//声明表
HSSFSheet sheet = wb.createSheet("第一个表");
//声明行
HSSFRow row = sheet.createRow(7);
//声明列
HSSFCell cel = row.createCell(3);
//写入数据
cel.setCellValue("你也好");
FileOutputStream fileOut = new FileOutputStream("d:/a/b.xls");
wb.write(fileOut);
fileOut.close();
第二步:导出指定数据库的所有表
分析:
1:某个数数据库有多少表,表名是什么?―――DataBaseMetadate.getMetadate().getTables(null,null,null,new String[]Table); - excel的文件名称。
2:对每一个表进行select * 操作。 - 每一个sheet的名称。
3:分析表结构,rs.getMetadate(); ResultSetMedated
4:多个列,列名是什么. - 字段名就是sheet的第一行信息。
5:获取每一行的数据 – 放到sheet第一行以后。
@Test
public void export() throws Exception
//声明需要导出的数据库
String dbName = "focus";
//声明book
HSSFWorkbook book = new HSSFWorkbook();
//获取Connection,获取db的元数据
Connection con = DataSourceUtils.getConn();
//声明statemen
Statement st = con.createStatement();
//st.execute("use "+dbName);
DatabaseMetaData dmd = con.getMetaData();
//获取数据库有多少表
ResultSet rs = dmd.getTables(dbName,dbName,null,new String[]"TABLE");
//获取所有表名 - 就是一个sheet
List<String> tables = new ArrayList<String>();
while(rs.next())
String tableName = rs.getString("TABLE_NAME");
tables.add(tableName);
for(String tableName:tables)
HSSFSheet sheet = book.createSheet(tableName);
//声明sql
String sql = "select * from "+dbName+"."+tableName;
//查询数据
rs = st.executeQuery(sql);
//根据查询的结果,分析结果集的元数据
ResultSetMetaData rsmd = rs.getMetaData();
//获取这个查询有多少行
int cols = rsmd.getColumnCount();
//获取所有列名
//创建第一行
HSSFRow row = sheet.createRow(0);
for(int i=0;i<cols;i++)
String colName = rsmd.getColumnName(i+1);
//创建一个新的列
HSSFCell cell = row.createCell(i);
//写入列名
cell.setCellValue(colName);
//遍历数据
int index = 1;
while(rs.next())
row = sheet.createRow(index++);
//声明列
for(int i=0;i<cols;i++)
String val = rs.getString(i+1);
//声明列
HSSFCell cel = row.createCell(i);
//放数据
cel.setCellValue(val);
con.close();
book.write(new FileOutputStream("d:/a/"+dbName+".xls"));
追问
我要导出的是docx
参考技术B 截一段代码给你参考//先导入jar包org.apache.poi.ss.usermodel.Workbook
Workbook wb = ExcelUtils.create(file.getInputStream());
//获取导入模板的第一个sheet
Sheet sheet1 = wb.getSheetAt(0);
//将sheet1校验结果写到最后一列excel上
for (int i = 0; i < sheet1.getPhysicalNumberOfRows(); i++)
//i=1就是sheet1的第一行,以此类推
Row row = sheet1.getRow(i);
Cell cell = row.createCell(14);//创建单元格
cell.setCellValue("aaaa");//设置单元格的值(i=1时表示第1行第14列)
Cell cell2 = row.createCell(13);
cell2.setCellValue("aaa");
FileOutputStream os = new FileOutputStream(request.getRealPath(ApplicationStatic.FILETEM)+path);
wb.write(os);
os.close();
sql 7.0的数据库拷贝出来。从装机后数据可以恢复吗???怎么恢复请教各位大侠了??
我的系统是win 98 ,因为系统损坏,我怕丢失数据。直接把sql 7.0的数据库拷贝出来。待从装机后数据可以恢复吗???怎么恢复请教各位大侠了??
你重装SQL,打开SQL,把你备份好的数据恢复就行了步骤:
进入到SQL介面,
右击数据库,
所有任务,
附加数据库就能把数据恢复! 参考技术A 可以,在企业管理器里面右击数据库->所有任务->附加数据库 参考技术B 只要把 数据库里原来的*.MDF文件一个一个还原到数据库中就可以 参考技术C 上面说的可以,不过也不用那么麻烦,把服务断开后直接拷贝就可以。 参考技术D 可以的 只要你装的还是7.0
以上是关于请教:java从数据库获取数据导出docx,有多个表格,请问怎么导出?的主要内容,如果未能解决你的问题,请参考以下文章
从Word(Docx)读取方程式和公式到html并使用java保存数据库