`
xuningxiaoni
  • 浏览: 33630 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

java批量处理

阅读更多
从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与xml互转,去除首尾页面,批量追加文字,批量修改log图片,创建页眉、页脚,修改无规则的数据等等

    Java批量处理Word是一种高效的方法,尤其在需要对大量Word文档进行操作时,如转换格式、修改内容、添加元素等。本篇文章将详细讲解利用Java库(如DOM4J和docx4j)实现这些功能。 首先,让我们了解DOM4J。DOM4J是一...

    Java 批量处理工具

    该批量工具主要实现批量文件移动、批量重命名和批量解压ZIP文件

    java批量删除列表内容

    本文将深入探讨如何实现这个功能,以及相关的Java批量处理技术。 首先,让我们了解Java中最常用的列表接口`List`,它提供了多种操作集合的方法,包括添加、删除、查找等。在Java中,我们可以使用`ArrayList`或`...

    java数据批量处理

    在Java编程领域,数据批量处理是一项常见的任务,尤其在大数据、数据库操作以及系统集成等场景中,批量处理能显著提高效率并减少资源消耗。本文将深入探讨Java如何进行数据批量处理,涉及的主要知识点包括批量读取、...

    java多线程实现大批量数据导入源码

    总的来说,本项目通过Java多线程技术,结合合理的数据切分和线程池管理,实现对大数据的高效批量处理。通过分析和优化这些关键点,我们可以根据实际情况调整参数,进一步提高数据导入导出的效率。

    java批量执行SQL

    ### Java批量执行SQL知识点解析 在Java开发过程中,经常需要与数据库进行交互,尤其是在处理大量数据时,如何高效地执行SQL语句变得尤为重要。本文将详细介绍如何利用Java进行批量SQL执行,包括其背景、实现原理、...

    Java文件批量处理程序

    Java 文件批量处理程序 Java 文件批量处理程序是使用 Java 语言开发的一款功能强大且实用的文件批量处理工具。下面我们将对该程序的主要功能和使用方法进行详细的介绍。 程序概述 Java 文件批量处理程序是一款...

    Java实现批量向mysql写入数据的方法

    本文中提供了一个完整的示例代码,演示了Java实现批量向mysql写入数据的方法,包括JDBC连接mysql数据库、批量向mysql写入数据和基本的异常处理等操作。该示例代码可以作为Java程序设计的参考,帮助读者更好地理解...

    java批量图片上传

    本话题聚焦于“Java批量图片上传”,这通常涉及到Web应用中的文件上传功能,尤其是处理大量图片的情况。在Oracle数据库环境下,这些图片数据可能需要存储在数据库中或者与数据库紧密关联。 首先,我们要理解图片...

    批量打印(java)

    在IT行业中,批量打印是一项常见的需求,特别是在企业级应用中,例如报表生成、订单处理等场景。本话题主要关注如何在Java环境下实现Web批量打印功能。通过提供的信息,我们可以推测这是一个利用某种技术将HTML内容...

    java实现批量上传图片

    在Java编程环境中,批量上传图片是一项常见的功能,尤其在Web应用中,如社交媒体、电子商务或者图库管理系统等。本项目提供了完整的代码实现,使得开发者能够快速集成到自己的开发工具中,实现用户友好的批量图片...

    java 实现二维码批量打印

    4. **批量处理**: 如果需要批量生成二维码,可以遍历数据列表,每次调用上述代码生成一个二维码图片。生成后,可以将这些图片保存在服务器上或者内存中。 5. **设置打印任务**: 创建一个Java程序或者Web服务接口,...

    Java批量反编译工具

    本文将深入探讨Java反编译的相关知识点,以及批量处理的便利性。 首先,我们要理解什么是反编译。反编译是将机器可读的二进制代码(如.class文件)转换回人类可读的源代码(如.java文件)的过程。在Java中,这个...

    用JAVA实现远程图片批量下载

    ### 使用JAVA实现远程图片批量下载的关键技术点 #### 一、引言 随着互联网的快速发展,用户对于网络资源的需求越来越多样化。其中,批量下载图片的需求尤为显著,尤其是在处理网络相册、电子书籍等内容时。传统的...

    java批量下载图片

    - **批量处理**:程序可以遍历源目录下的所有图片文件,并根据用户设定的尺寸进行缩放和保存至目标目录。 - **异常处理**:需要添加适当的异常处理逻辑,如文件不存在、IO异常等,确保程序的健壮性和稳定性。 ###...

    java批处理文本文件

    从E盘a文件夹读取txt文档,自动将以@开头以结束的字符串重新写入E盘c文件夹下

    java 打印pdf文件 也可批量打印

    ##### 4.2 Java批量打印实现 ```java public static void batchPrintPdfs(List&lt;String&gt; pdfPaths) { for (String path : pdfPaths) { if (!printPdf(path)) { System.out.println("打印失败: " + path); } else...

    java 批量上传图片

    在Java编程环境中,批量上传图片是一项常见的任务,特别是在构建Web应用程序或者处理大量媒体资源时。这个过程涉及到文件I/O操作、多线程处理、网络通信等多个技术领域。下面将详细阐述实现这一功能所需的关键知识点...

    java实现文件批量上传

    在Java开发中,文件批量上传是一项常见的功能,尤其在企业级应用中,用户可能需要上传大量数据或文件。本教程将介绍如何利用SWF(Simple Workflow)和EXT库来实现这一功能。SWF是一个用于创建富互联网应用程序的前端...

    java实现批量更改照片的名字

    在IT行业中,编程任务经常涉及到文件操作,例如批量处理文件,比如本题中提到的“批量更改照片的名字”。Java作为一种广泛使用的编程语言,提供了丰富的API来处理文件和目录。在这个场景下,我们可以利用Java的`java...

Global site tag (gtag.js) - Google Analytics