从Excel中得到数据的方法:
package com.mobilecn.kys.export;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import com.mobilecn.kys.beans.DicMagazineMatchLevel;
public class ImportExcel {
public static List getDataFromExcel(String attachPath,String version) throws BiffException, IOException {
// 附件存储路径
// String attachPath = "E:\\2007-2008中国科学引文数据库源期刊目录(修正版).xls";
Workbook wb = Workbook.getWorkbook(new File(attachPath));
Sheet booksheet = wb.getSheet(0);
List list = new ArrayList();
try {
// 总行数
int rsRows = booksheet.getRows();
for (int x = 5; x < rsRows - 1; x++) {
Cell[] row = booksheet.getRow(x);
if (row.length == 0)
continue;
String row0 = row[0].getContents().trim(); // 期刊中文名
String row1 = row[1].getContents().trim(); // ISSN
String row2 = row[2].getContents().trim(); // 所属库
String row3 = row[3].getContents().trim(); // 等级层次
if ((row0 == null || row0.equals(""))
&& (row1 == null || row1.equals(""))
&& (row2 == null || row2.equals(""))
&& (row3 == null || row3.equals(""))) {
continue;
}
DicMagazineMatchLevel dic = new DicMagazineMatchLevel();
dic.setChinessName(row0);
dic.setIssn(row1);
dic.setBelongto(row2);
dic.setMmlevel(row3);
dic.setStatus(1L);
dic.setVersion(version);
list.add(dic);
}
} finally {
wb.close();
}
return list;
}
}
批量处理的方法
/**
* 添加数据
*
* @param list
* @param conn
* @return
*/
private String insertData(List list, Connection conn, Session session,String version) {
PreparedStatement pstmt = null;
String sql = "insert into TB_DIC_MAGAZINE_MATCH_LEVEL(MMLID,CHINESSNAME,ISSN,BELONGTO,MMLEVEL,STATUS,VERSION) values (SQ_DIC_MAGAZINE_MATCH_LEVEL.NEXTVAL,?,?,?,?,?,?)";
int size = list.size();
try {
pstmt = conn.prepareStatement(sql);
for (int i = 0; i < size; i++) {
DicMagazineMatchLevel level = (DicMagazineMatchLevel) list.get(i);
pstmt.setString(1, level.getChinessName());
pstmt.setString(2, level.getIssn());
pstmt.setString(3, level.getBelongto());
pstmt.setString(4, level.getMmlevel());
pstmt.setLong(5, level.getStatus());
pstmt.setString(6, version);
pstmt.addBatch();
if (i % 1000 == 0) {
pstmt.executeBatch(); // 执行prepareStatement对象中所有的sql语句
// conn.commit();//事物提交
// session.flush();//数据库与缓存同步
// session.clear();//清空缓存
if (null == conn) { // 如果连接关闭了 就在创建一个 为什么要这样,原因是conn.commit()后可能conn被关闭
conn = session.connection();
}
}
}
pstmt.executeBatch();// 1.执行与1000去模不是0的数据
conn.commit();// 事物提交
} catch (SQLException e) {
Alert.error("操作失败", "操作失败", "/pages/common/error.jsp",Alert.DIALOG_WINDOW, null);
e.printStackTrace();
return null;
}
return Constants.SUCCESS;
}
其实也可以用hibernate的批处理实现如果数据量不太大,不过速度有些慢了。
/**
* 批量添加数据
* @param list
*/
public void insertBatch(List list){
if(list == null){
return;
}
if(__dao==null){
__dao = new BasicDAO();
}
Session session = getSession();
beginTransaction(session);
int size = list.size();
for(int i = 0; i < size ; i++){
__dao.insert(session, list.get(i));
}
commit(session);
}
/**
* 批量修改数据
* @param list
*/
public void updaBath(List list){
if(list == null){
return;
}
if(__dao==null){
__dao = new BasicDAO();
}
Session session = getSession();
beginTransaction(session);
int size = list.size();
for(int i = 0; i < size ; i++){
__dao.update(session, list.get(i));
}
commit(session);
}
public String upload() {
String file = (String) this.getRequest().getParameter("uploadfilename");
String versionNumber = (String)this.getRequest().getParameter("versionnumber");
/*System.out.println("filefilefilefilefilefile " + file);
System.out.println("versionNumberversionNumberversionNumber " + versionNumber);*/
//String file= "E:\\2007-2008中国科学引文数据库源期刊目录(修正版).xls";
if (file == null || file.equals("")) {
return null;
}
Session session = null;
List list = null;
try {
list = ImportExcel.getDataFromExcel(file,"9");
if (list == null || list.size() == 0) {
return null;
}
session = levelFacade.getSession();
Transaction tx = session.beginTransaction();
conn = session.connection();
conn.setAutoCommit(false);
String name = updateData(tx, session);
if (name.equals(Constants.FIALURE)) {
return null;
}
insertData(list, conn, session,versionNumber);
} catch (BiffException e) {
e.printStackTrace();
Alert.error("操作失败", "操作失败", "/pages/common/error.jsp",Alert.DIALOG_WINDOW, null);
return null;
} catch (IOException e) {
e.printStackTrace();
Alert.error("操作失败", "操作失败", "/pages/common/error.jsp",Alert.DIALOG_WINDOW, null);
return null;
} catch (SQLException e) {
Alert.error("操作失败", "操作失败", "/pages/common/error.jsp",Alert.DIALOG_WINDOW, null);
e.printStackTrace();
return null;
} finally {
session.flush();
session.clear();
close();
}
//Alert.error("操作成功", "操作成功", "/pages/common/success.jsp",Alert.DIALOG_WINDOW, null);
//this.getRequest().setAttribute("MESSAGE", Constants.SUCCESS);
return Constants.SUCCESS;
}
/**
* 关闭连接
*/
private void close() {
try {
if (sult != null) {
sult.close();
}
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
要让得打jxl的jar包
分享到:
相关推荐
Java批量处理Word是一种高效的方法,尤其在需要对大量Word文档进行操作时,如转换格式、修改内容、添加元素等。本篇文章将详细讲解利用Java库(如DOM4J和docx4j)实现这些功能。 首先,让我们了解DOM4J。DOM4J是一...
该批量工具主要实现批量文件移动、批量重命名和批量解压ZIP文件
本文将深入探讨如何实现这个功能,以及相关的Java批量处理技术。 首先,让我们了解Java中最常用的列表接口`List`,它提供了多种操作集合的方法,包括添加、删除、查找等。在Java中,我们可以使用`ArrayList`或`...
在Java编程领域,数据批量处理是一项常见的任务,尤其在大数据、数据库操作以及系统集成等场景中,批量处理能显著提高效率并减少资源消耗。本文将深入探讨Java如何进行数据批量处理,涉及的主要知识点包括批量读取、...
总的来说,本项目通过Java多线程技术,结合合理的数据切分和线程池管理,实现对大数据的高效批量处理。通过分析和优化这些关键点,我们可以根据实际情况调整参数,进一步提高数据导入导出的效率。
### Java批量执行SQL知识点解析 在Java开发过程中,经常需要与数据库进行交互,尤其是在处理大量数据时,如何高效地执行SQL语句变得尤为重要。本文将详细介绍如何利用Java进行批量SQL执行,包括其背景、实现原理、...
Java 文件批量处理程序 Java 文件批量处理程序是使用 Java 语言开发的一款功能强大且实用的文件批量处理工具。下面我们将对该程序的主要功能和使用方法进行详细的介绍。 程序概述 Java 文件批量处理程序是一款...
本文中提供了一个完整的示例代码,演示了Java实现批量向mysql写入数据的方法,包括JDBC连接mysql数据库、批量向mysql写入数据和基本的异常处理等操作。该示例代码可以作为Java程序设计的参考,帮助读者更好地理解...
本话题聚焦于“Java批量图片上传”,这通常涉及到Web应用中的文件上传功能,尤其是处理大量图片的情况。在Oracle数据库环境下,这些图片数据可能需要存储在数据库中或者与数据库紧密关联。 首先,我们要理解图片...
在IT行业中,批量打印是一项常见的需求,特别是在企业级应用中,例如报表生成、订单处理等场景。本话题主要关注如何在Java环境下实现Web批量打印功能。通过提供的信息,我们可以推测这是一个利用某种技术将HTML内容...
在Java编程环境中,批量上传图片是一项常见的功能,尤其在Web应用中,如社交媒体、电子商务或者图库管理系统等。本项目提供了完整的代码实现,使得开发者能够快速集成到自己的开发工具中,实现用户友好的批量图片...
4. **批量处理**: 如果需要批量生成二维码,可以遍历数据列表,每次调用上述代码生成一个二维码图片。生成后,可以将这些图片保存在服务器上或者内存中。 5. **设置打印任务**: 创建一个Java程序或者Web服务接口,...
本文将深入探讨Java反编译的相关知识点,以及批量处理的便利性。 首先,我们要理解什么是反编译。反编译是将机器可读的二进制代码(如.class文件)转换回人类可读的源代码(如.java文件)的过程。在Java中,这个...
### 使用JAVA实现远程图片批量下载的关键技术点 #### 一、引言 随着互联网的快速发展,用户对于网络资源的需求越来越多样化。其中,批量下载图片的需求尤为显著,尤其是在处理网络相册、电子书籍等内容时。传统的...
- **批量处理**:程序可以遍历源目录下的所有图片文件,并根据用户设定的尺寸进行缩放和保存至目标目录。 - **异常处理**:需要添加适当的异常处理逻辑,如文件不存在、IO异常等,确保程序的健壮性和稳定性。 ###...
从E盘a文件夹读取txt文档,自动将以@开头以结束的字符串重新写入E盘c文件夹下
##### 4.2 Java批量打印实现 ```java public static void batchPrintPdfs(List<String> pdfPaths) { for (String path : pdfPaths) { if (!printPdf(path)) { System.out.println("打印失败: " + path); } else...
在Java编程环境中,批量上传图片是一项常见的任务,特别是在构建Web应用程序或者处理大量媒体资源时。这个过程涉及到文件I/O操作、多线程处理、网络通信等多个技术领域。下面将详细阐述实现这一功能所需的关键知识点...
在Java开发中,文件批量上传是一项常见的功能,尤其在企业级应用中,用户可能需要上传大量数据或文件。本教程将介绍如何利用SWF(Simple Workflow)和EXT库来实现这一功能。SWF是一个用于创建富互联网应用程序的前端...
在IT行业中,编程任务经常涉及到文件操作,例如批量处理文件,比如本题中提到的“批量更改照片的名字”。Java作为一种广泛使用的编程语言,提供了丰富的API来处理文件和目录。在这个场景下,我们可以利用Java的`java...