WebLogic Server中从一个MySQL数据库表创建Excel电子表格
来源:互联网 发布:c语言经典编程实例 编辑:程序博客网 时间:2024/05/16 17:04
通常要求将数据库表呈现在Excel电子表格中。同样,开发人员的需求也可以保存到数据库表中的Excel电子表格中。Apache POI HSSF项目旨在提供一个创建Excel电子表格的API。使用POI HSSF项目生成的Excel电子表格中的数据可以是XML文档中的静态数据,或者是从一个数据库中动态检索到的数据。此外,Excel文档也可以被转换为XML文档或者保存在数据库中。在本教程中,我们将讨论在WebLogic Server中从一个MySQL数据库表创建Excel电子表格的步骤,随后将该Excel电子表格保存在一个数据库表中。
初步设置
org.apache.poi.hssf.usermodel包提供POI HSSF项目的实现。要生成或解析Excel电子表格,需要在类路径中设置org.apache.poi.hssf.usermodel包类。下载Apache POI库poi-bin-2.5.1-final-20040804.zip文件,将该zip文件解压缩所到一个安装目录(http://jakarta.apache.org/poi/)。安装WebLogic Server 8.1。下载MySQL数据库(www.mysql.com)。解压缩MySQL zip文件mysql-4.0.25-win32.zip到一个目录下。安装MySQL数据库。下载MySQL Connector/J JDBC驱动程序(www.mysql.com/products/connector/j/)。解压缩MySQL zip文件mysql-connector-java-3.1.10.zip到一个目录下。添加MySQL JDBC驱动程序jar文件mysql-connector-java-3.1.10-bin.jar到<weblogic81>/samples/domains/examples/startExamplesServer脚本CLASSPATH变量。
使用下面的DOS命令登录到MySQL数据库:
>mysql
使用下面的命令访问示例数据库测试:
mysql>use test
在MySQL数据库中创建一个示例数据库表,将在此生成Excel电子表格。清单1展示了创建示例表Catalog的SQL脚本。
清单1:Catalog.sql
CREATE TABLE Catalog(CatlogId VARCHAR(25)PRIMARY KEY, Journal VARCHAR(25), Section VARCHAR(25), Edition VARCHAR(25), Title Varchar(125), Author Varchar(25));INSERT INTO Catalog VALUES('catalog1', 'dev2dev','WebLogic Platform 8.1','Oct 2004', 'BEA WebLogic Platform 8.1 SP3 Evaluation Guide','dev2dev');INSERT INTO Catalog VALUES('catalog2', 'dev2dev', 'WebLogic Server', 'Feb 2005', 'Application Architecture for Applications Built on BEA WebLogic Platform 8.1', 'Bob Hensle');INSERT INTO Catalog VALUES('catalog3', 'dev2dev','WebLogic Integration','March 2005', 'The BEA WebLogic Platform and Host Integration','Tom Bice');
接下来,我们将向WebLogic Server Classpath添加Apache POI .jar文件,并在WebLogic Server中创建一个JDBC数据源来检索用于Excel电子表格的数据。
添加poi-2.5.1-final-20040804.jar文件到<weblogic81>/samples/domains/examples/startExamplesServer脚本中的CLASSPATH变量中。<weblogic81>是安装WebLogic Server的目录。
接下来,使用MySQL数据库在WebLogic Server中创建JDBC连接。使用startExamplesServer脚本启动示例服务器。使用URL http://localhost:7001/console或者WebLogic Server Examples索引中的Administration Console链接来访问管理控制台。在管理控制台中,右击examples>Services>JDBC>Connection Pools节点,并选择Configure a new JDBCConnectionPool。指定以下连接属性来配置JDBC连接池:
- 数据库类型:MySQL
- JDBC驱动程序:MySQL's Driver (Type 4)
- 数据库名称:test
- 主机名:localhost
- 端口号:3306
- 驱动程序类名:com.mysql.jdbc.Driver
- 连接URL:jdbc:mysql://localhost:3306/test
接下来,在管理控制台中配置JDBC数据源。右击examples>Services>JDBC>DataSources节点,并选择Configure a new JDBCTxDataSource。在Configure the data source框中指定数据源名和JNDI名——例如,MySqlDS。在Connect to connection pool框中选择先前使用MySQL数据库配置的连接池。在Target the datasource框中选择examplesServer。这样就使用MySQL数据库配置了一个数据源。
使用Apache POI生成Excel文档
在这一节中,我们将从示例数据库表生成Excel电子表格。首先,创建一个生成Excel电子表格的JSP应用程序。
在JSP中,将从一个MySQL数据库表创建Excel电子表格。使用Apache POI HSSF API来生成Excel电子表格。Apache POI HSSF包中含有用于Excel电子表格的不同组件的类。表1列出了Apache POI HSSF包中一些常用的类:
首先,导入Apache POI HSSF包:
<%@ page import="org.apache.poi.hssf.usermodel.*, java.sql.*, java.io.*,javax.naming.InitialContext"%>创建一个Excel workbook:
HSSFWorkbook wb=new HSSFWorkbook();
接下来,创建一个Excel电子表格:
HSSFSheet sheet1=wb.createSheet("sheet1");
该电子表格的数据是从MySQL数据库表检索得到的。从数据库获得JDBC连接。JDBC连接是使用datasource JNDI MySqlDS获得的。
InitialContext initialContext = new InitialContext(); javax.sql.DataSource ds = (javax.sql.DataSource) initialContext.lookup("MySqlDS"); java.sql.Connection conn = ds.getConnection();
创建一个java.sql.Statement,并从示例表Catalog获得结果集:
Statement stmt=conn.createStatement(); ResultSet resultSet=stmt.executeQuery("Select * from Catalog");
为Excel电子表格创建一个标题行。Excel电子表格中的行从“0”开始。
HSSFRow row=sheet1.createRow(0);
对应于表的列设置标题行单元格的值。行单元格也是从“0”开始。例如,行中第一个单元格的值被使用setCellValue方法设置为CatalogId。
row.createCell((short)0).setCellValue("CatalogId");
要向电子表格添加行,迭代结果集并为每个表格行添加一行。从ResultSet检索列值,并在行单元格中设置这些值。
for (int i=1;resultSet.next(); i++) { row=sheet1.createRow(i);row.createCell((short)0).setCellValue(resultSet.getString(1));row.createCell((short)1).setCellValue(resultSet.getString(2));row.createCell((short)2).setCellValue(resultSet.getString(3));row.createCell((short)3).setCellValue(resultSet.getString(4));row.createCell((short)4).setCellValue(resultSet.getString(5));}
创建一个FileOutputStream来将Excel电子表格输出到XLS文件。每个XLS文件表示一个Excel电子表格:
FileOutputStream output=new文件OutputStream(new文件("c:/excel/catalog.xls"));
将Excel电子表格输出到XLS文件:
wb.write(output);
在“参考资料”部分有用于生成Excel电子表格的ExcelWebLogic.jsp JSP。
要在WebLogic Server中运行ExcelWebLogic.jsp JSP,复制该JSP到<weblogic81>/samples/server/examples/build/mainWebApp目录。使用URL http://localhost:7001/ExcelWebLogic.jsp运行该JSP。
生成的Excel电子表格可以在Excel (http://office.microsoft.com/en-us/FX010858001033.aspx)或Excel Viewer工具tool (http://office.microsoft.com/en-us/assistance/HA011620741033.aspx)中打开。
将Excel文档保存在数据库表中
本节我们将使用Apache POI API将一个Excel电子表格保存在MySQL数据库表中。要保存的示例Excel文档是catalog.xls,即,前一节所生成的电子表格。该Excel电子表格被保存在MySQL表Catalog中。使用MySQL命令删除前一节中用于生成Excel文档的Catalog表:
MySQL>DROP table Catalog;
开发一个JSP应用程序来将示例Excel文档保存在MySQL数据库中。在JSP应用程序中导入Apache POI包org.apache.poi.poifs.filesystem和org.apache.poi.hssf.usermodel。org.apache.poi.poifs.filesystem包中包含创建Excel workbook的类,而org.apache.poi.hssf.usermodel包中包含表示Excel workbook、电子表格、电子表格行和行单元格的类。
<%@ page import="org.apache.poi.poifs.filesystem.*, org.apache.poi.hssf.usermodel.*, java.sql.*, java.io.*,javax.naming.InitialContext"%>
像前一节一样,从MySQL datasource获得JDBC连接:
InitialContext initialContext = new InitialContext(); javax.sql.DataSource ds = (javax.sql.DataSource) initialContext.lookup("MySqlDS"); java.sql.Connection conn = ds.getConnection();
从JDBC连接创建java.sql.Statement:
Statement stmt=conn.createStatement();
创建一个MySQL表来保存Excel电子表格:
String createTable="CREATE TABLE Catalog(CatalogId VARCHAR(25) PRIMARY KEY,Journal VARCHAR(25),Section VARCHAR(25),Edition VARCHAR(25),Title Varchar(125),Author Varchar(25))";
stmt.execute(createTable);
创建一个POIFSFileSystem来读取Excel文档:
File catalogExcel=new File("C:/ExcelWebLogic/catalog.xls"); FileInputStream inputStream=new FileInputStream(catalogExcel); POIFSFileSystem fileSystem=new POIFSFileSystem(inputStream);
从POIFSFileSystem获得一个HSSF workbook:
HSSFWorkbook wb=new HSSFWorkbook(fileSystem);
从Excel workbook获得一个Excel电子表格:
HSSFSheet sheet1=wb.getSheet("sheet1");
使用row iterator迭代电子表格中的行:
java.util.Iterator rowIterator=sheet1.rowIterator(); HSSFRow row=(HSSFRow)rowIterator.next();
对于每一行,迭代行单元格的值。例如,CatalogId行单元格值是使用以下代码检索的:
String catalogId=row.getCell((short)0).getStringCellValue();
对于Excel电子表格中的每一行,添加一个表格行:
String exceltable="INSERT INTO Catalog VALUES("+"/'"+catalogId+"/'"+","+"/'"+journal+"/'"+","+"/'"+section+"/'"+","+"/'"+edition+"/'"+","+"/'"+title+"/'"+","+"/'"+author+"/'"+")";stmt.execute(exceltable);
复制POIWebLogic.jsp到<weblogic81>/samples/server/examples/build/mainWebApp目录。使用URL http://localhost:7001/POIWebLogic.jsp运行JSP。这样就从Excel电子表格生成一个MySQL数据库表。在“参考资料”部分有用于从Excel电子表格生成数据库表的POIWebLogic.jsp。
结束语
在本教程中,我们从一个MySQL数据库表生成了一个Excel电子表格,随后将该电子表格保存在一个数据库表中。WebLogic Server提供了一个数据源以及运行JSP应用程序的J2EE应用服务器,从而方便了从数据库表到Excel电子表格以及从电子表格到数据库表的转换。
- WebLogic Server中从一个MySQL数据库表创建Excel电子表格
- 从Excel电子表格生成图书信息表
- Excel电子表格导入数据库
- WebLogic Server 8.1.3中使用MySQL数据库
- struts2实现从MYSQL数据库表中导出EXCEL表
- Unity3d_C#winform中Excel电子表格导入数据库示例
- 使用 Apache Jakarta POI 从 Excel 电子表格生成外部表
- 使用 Apache Jakarta POI 从 Excel 电子表格生成外部表
- Oracle从Excel电子表格生成图书信息表
- 在VS2010中一个MySql的数据库表的创建
- 在VS2010中一个MySql的数据库表的创建
- MySQL数据库,从一个数据库中复制指定表到另一个数据库中
- Excel电子表格作为数据库的用法
- PHP:ODBC处理EXCEL电子表格数据库实例
- php从mysql数据库中数据导成excel文档
- mysql创建一个数据库
- mysql在同一个服务器中把表从一个数据库转到另一个数据库中
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- vim 插件
- EVC中的数据类型转换
- Nintendo DS(NDS) 开发环境配置教程
- 面试:就职外企可用的英语问答
- 对话框控件被窗口背景遮挡住的问题
- WebLogic Server中从一个MySQL数据库表创建Excel电子表格
- 新的开端
- most popular site
- 自性迷,佛即众生;自性悟,众生即佛
- 标记字段的管理
- 网游外挂之制作流程
- [DB2 学习记录]9. 访问对象
- In my secret life
- 总结C++中的所有强制转换函数(const_cast,reinterpret_cast,static_cast,dynamic_cast)