使用JXL库将Excel文件导入MySQL数据库操作详解
本篇文章主要介绍了如何在Java环境中使用Apache POI库(包括jxl.jar)将Excel文件导入MySQL数据库的过程。首先,作者定义了一个Action方法`saveAssetFormExcel`,该方法接收ActionMapping、ActionForm、HttpServletRequest和HttpServletResponse作为参数,并处理文件上传和转换。 1. **文件上传与处理**: 方法开始时,设置请求字符编码为UTF-8,创建一个`DiskFileItemFactory`实例用于处理上传的文件。然后,使用`ServletFileUpload`类解析HTTP请求中的文件,存储在`List<FileItem>`中。接着,遍历文件项,获取每个文件的输入流。 2. **读取Excel文件**: 使用Apache POI库的`Workbook`类加载Excel文件,通过`getSheets()`方法获取工作簿中的所有sheet。这里假设第一个sheet(`rs`)用于数据操作。 3. **数据结构分析**: `rs`对象代表Excel工作表,通过`getColumns()`和`getRows()`方法获取列数和行数。循环遍历每一行和指定范围内的列(这里指`clos-7`,可能是为了跳过表头),读取单元格的值。 4. **数据库交互**: 获取到的数据被用来填充数据库表。通过`BaseManager`接口调用`this.getBean("baseManager")`来获取业务逻辑管理器,然后在for循环中,逐行、逐列插入数据。`String assetUseOrgS = (String) rs.getCell(j++, i).getContents().trim();`这行代码表示读取单元格的文本内容并进行trim处理,可能对应于数据库表中的某一字段。 5. **数据库操作**: 由于没有提供具体的数据库操作代码,可以推测这部分会涉及到`BaseManager`对`jdbc`连接的管理,如创建PreparedStatement,执行SQL插入语句,最后关闭连接。 6. **异常处理**: 文档中未明确提及错误处理,但实际开发中应包含适当的异常处理机制,以防文件读取、数据库操作过程中可能出现的问题。 总结来说,这个方法是Excel数据清洗和导入MySQL数据库的基础步骤,适用于需要批量处理Excel数据并将之存储到关系型数据库的应用场景。开发人员需确保已经正确配置了数据库连接和Apache POI的相关依赖,并根据实际业务需求调整数据映射和SQL语句。
* excel导入,需要导入jxl.jar包
*/
public ActionForward saveAssetFormExcel(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
/*
* 操作前提
*
*/
request.setCharacterEncoding("UTF-8");
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request);
InputStream is = null;
Iterator itr = items.iterator();
FileItem item = null;
Sheet rs = null;
while (itr.hasNext()) {
item = (FileItem) itr.next();
is = item.getInputStream();
}
//参数
Workbook rwb=Workbook.getWorkbook(is);
Sheet[] sheets = rwb.getSheets();
if(sheets != null && sheets.length > 0){
rs = sheets[0];
}
//Manager or Serivce
/*
* 操作
*/
if(rs != null){
int clos=rs.getColumns();//得到所有的列
int rows=rs.getRows();//得到所有的行
for (int i = 1; i < rows; i++) {
for (int j = 0; j < clos-7; j++) {
//j是列数,i是行数
//
String assetUseOrgS = (String) rs.getCell(j++, i).getContents().trim();//使用部门
String assetCodeS = (String) rs.getCell(j++, i).getContents().trim();//资产编号
String assetTypeS = (String) rs.getCell(j++, i).getContents().trim();//资产分类
String assetNameS = (String) rs.getCell(j++, i).getContents().trim();//资产名称
String assetAccountS = (String) rs.getCell(j++, i).getContents().trim();//财务入账日期
String assetWorthDateS = (String) rs.getCell(j++, i).getContents().trim();//价值类型
String assetWorthS = (String) rs.getCell(j++, i).getContents().trim();//价值
String assetGainS = (String) rs.getCell(j++, i).getContents().trim();//取得方式
String assetGainDateS = (String) rs.getCell(j++, i).getContents().trim();//取得日期
String assetUseStatusS = (String) rs.getCell(j++, i).getContents().trim();//使用状况
String assetUseDirectionS = (String) rs.getCell(j++, i).getContents().trim();//使用方向
String assetManageOrgS = (String) rs.getCell(j++, i).getContents().trim();//管理部门
String assetUseUserS = (String) rs.getCell(j++, i).getContents().trim();//使用人
String assetNumS = (String) rs.getCell(j++, i).getContents().trim();//数量
String assetUseOrg = (String) rs.getCell(j++, i).getContents().trim();//制单人
// String assetUseOrg = (String) rs.getCell(j++, i).getContents().trim();//制单时间
// String assetUseOrg = (String) rs.getCell(j++, i).getContents().trim();//清查编号
剩余6页未读,继续阅读
- 粉丝: 2w+
- 资源: 17
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展