`
kyo19
  • 浏览: 73573 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Jxl将Excel中的数据写入数据库

阅读更多

今天做了一个将Excel中的数据读出,再写入到数据库指定的表中去,在网上查看了一下资料,通过Jxl完成了此项功能,但是程序可能还有问题,只能对Excel与数据表的结构相同的情况才能写入,否则就会报异常

 

PS:方法也是随便写的,并不能保证一定所有的特殊情况下都能运行,比如当Excel在第一行是个表格头的时候,读取Excel文件的时间就没去过滤这一行,当要写入数据库的时候就可能会出现数据类型不匹配而报错,如果有时间的朋友可以帮着修改一下,最好能将代码也发我一份,我的邮箱是:kyo153@163.com

 

1.读入Excel

package com.yw.core;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import jxl.BooleanCell;
import jxl.Cell;
import jxl.CellType;
import jxl.DateCell;
import jxl.LabelCell;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class ExcelRead {
	public Map<Integer,List<Object>> readExcel(String pathName,int sheetId) throws BiffException, IOException{
		Workbook book = Workbook.getWorkbook(new File(pathName));
		Sheet sheet = book.getSheet(sheetId);
		Map<Integer,List<Object>> map = new LinkedHashMap<Integer, List<Object>>();
		int rows = sheet.getRows();
		int columns = sheet.getColumns();
		
		for (int i = 0; i < rows; i++) {
			List<Object> list = new ArrayList<Object>();
			for (int j = 0; j < columns; j++) {
				Cell cell = sheet.getCell(j, i);				
				list.add(getExcelDate(cell));
			}
			map.put(i, list);
		}
		System.out.println(map);
		for (Object object : map.values()) {
			System.out.println(object);
		}
		book.close();
		return map;
	}
	
	public Object getExcelDate(Cell cell){
		if(cell.getType()==CellType.NUMBER){
			NumberCell number = (NumberCell) cell;
			return number.getValue();
		}else if (cell.getType() == CellType.LABEL){
			LabelCell label = (LabelCell) cell;
			return label.getString();
		}else if (cell.getType() == CellType.BOOLEAN){
			BooleanCell bool = (BooleanCell) cell;
			return bool.getValue();
		}else if (cell.getType() == CellType.DATE){
			DateCell d = (DateCell) cell;
			return d.getDate();
		}else{
			return cell.getContents();
		}
	}
	
	public static void main(String[] args) throws BiffException, IOException {
		ExcelRead read = new ExcelRead();
		read.readExcel("book1.xls", 0);
		
	}
}

 

2.写入数据库,这里只有二个方法,一个是Insert与Query,本身这里也只是做了个通用的方法,没有想过特别的情况

如果有数据不对,或是为空是否出现问题也没有去进行Check,以后有时间再修改吧

 

package com.yw.core;

import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class DBManager {
	private Connection conn = null;
	private Config config = new Config();

	public void getConnection(File file) throws ClassNotFoundException, IOException,
			SQLException {
		config.reloadConfig(file);
		System.out.println(config.toString());
		Class.forName(config.getClassname());
		if (conn == null || conn.isClosed()) {
			conn = DriverManager.getConnection(config.getUrl(), config
					.getUsername(), config.getPassword());
		}
	}

	public void close() throws SQLException {
		conn.close();
	}

	public boolean insert(String tableName, Object... obj) throws SQLException {
		int length = obj.length;
		PreparedStatement ps = null;
		StringBuilder builder = new StringBuilder();
		for (int i = 0; i < length; i++) {
			builder.append("?,");
		}
		builder.delete(builder.length()-1, builder.length());
		String sql = "insert into " + tableName + " values("+builder.toString()+")";
		System.out.println(sql);
		
		try {
			ps = conn.prepareStatement(sql);
			for (int i = 0; i < obj.length; i++) {
				ps.setObject(i+1, obj[i]);
			}
			if(ps.executeUpdate()>0){
				return true;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			ps.close();
		}
		return false;
	}
	
	public Map<Integer,List<Object>> query(String tableName) throws SQLException{
		
		Map<Integer, List<Object>> map = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		ResultSetMetaData metaData = null;
		try {
			map = new LinkedHashMap<Integer, List<Object>>();
			String sql = "select * from " + tableName;
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			metaData = rs.getMetaData();
			int columnCount = metaData.getColumnCount();
			int count = 0;
			while(rs.next()){
				List<Object> list = new ArrayList<Object>();
				for (int j = 1; j <= columnCount; j++) {
					list.add(rs.getObject(j));
				}
				map.put(count, list);
				count++;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			rs.close();
			ps.close();
		}
		return map;
	}
	
}
 

3.写了一个Config的方法,读取Properties文件的类,用来实时的加载DB的配置信息

 

package com.yw.core;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class Config {
	private String username;
	private String password;
	private String classname;
	private String url;

	public String getUsername() {
		return username;
	}

	public String getPassword() {
		return password;
	}

	public String getClassname() {
		return classname;
	}

	public String getUrl() {
		return url;
	}

	public void reloadConfig(File file) throws IOException{
		FileInputStream in = null;
		if(file == null){
			in = new FileInputStream(new File("config.properties"));
		}else{
			in = new FileInputStream(file);
		}
		
		Properties prop = new Properties();
		prop.load(in);
		username = prop.getProperty("username");
		password = prop.getProperty("password");
		classname = prop.getProperty("classname");
		url = prop.getProperty("url");
                in.close();
	}
	
	public String toString(){
		return username + "\n" + password + "\n" + classname + "\n" + url;
	}
}
 

 

1
1
分享到:
评论

相关推荐

    java中excel数据写入数据库

    综上所述,"java中excel数据写入数据库"涉及到的主要知识点有:Java Excel处理(使用jxl库),Struts2框架的文件上传,以及使用JDBC将数据写入数据库。这个过程需要对Java编程、Web开发和数据库操作有深入的理解。在...

    利用jxl把excel中的数据导入数据库

    标题“利用jxl把excel中的数据导入数据库”指的是使用Java Excel API(jxl)这个库来读取Excel文件中的数据,并将这些数据批量地导入到关系型数据库中。这是一个常见的需求,特别是在处理大量结构化数据时,例如进行...

    JXL(Java操作Excel文件Oracle数据库)

    为了将这两个过程结合起来,我们可以先用JXL读取Excel文件中的数据,然后通过OracleImporter类将这些数据批量插入到数据库。在这个过程中,可能需要对数据进行一些预处理,比如类型转换,错误检查等。 值得注意的是...

    使用jxl将数据库的数据导出到Excel

    在Java开发环境中,有时我们需要将数据库中的数据导出到Excel文件,以便于数据分析、报表生成或数据共享。这时,一个常用的工具就是JXL库。JXL全称为Java Excel API,它是一个强大的开源Java库,允许开发者在Java...

    JXL操作EXCEL 数据库导出EXCEL相关文件

    通过结合数据库操作,我们可以方便地将数据库中的数据导出为Excel格式,用于报表生成、数据分析或其他目的。使用JXL,可以实现跨平台的Excel处理,而无需依赖特定的Office软件,提高了开发的灵活性和效率。

    使用Jxl将数据库表信息转换为Excel

    这些测试代码可能包括设置数据库连接,执行SQL查询,创建Excel工作簿,将数据写入工作表,以及保存Excel文件等操作。 下面是一个简单的使用Jxl和JDBC将数据库表转换为Excel的大致流程: 1. **添加依赖**:首先,在...

    jxl实现导出excel数据

    这个文件可能包含了创建工作簿、工作表、行和单元格的完整示例,以及如何将数据写入Excel的具体实现。你可以通过查看和运行这个文件来加深对JXL库的理解和应用。 总的来说,JXL库为Java开发者提供了一个强大的工具...

    jsp中jxl读取excel表数据

    在jsp中用Java读取Excel中的数据,以便把该数据写入数据库或jsp页面,对Excel导入很有帮助

    JXL 下载 Excel 文档

    4. **导出数据为Excel**:如果你有一个Java集合(如ArrayList或HashMap)中的数据,可以方便地将其导出为Excel格式,这对于数据报告和分析非常有用。 5. **支持多种数据类型**:JXL支持多种Excel数据类型,包括字符...

    struts2 poi,jxl向excel表中插入记录源代码

    这个项目的核心功能是允许用户通过前端界面提交数据,然后这些数据会被Struts2的Action处理,并使用POI或JXL库写入到指定的Excel文件中。为了实现这一功能,你需要理解以下几个关键知识点: 1. **Struts2 Action**:...

    android通过jxl读excel存入sqlite3数据库

    总结,本文提供了一个简单的示例,展示了如何在Android应用中使用jxl库读取Excel文件,并将数据存储到SQLite 3数据库中。这个过程涉及到了文件读取、数据库连接、SQL操作以及批处理技术。在实际开发中,可以根据具体...

    Java用jxl读取excel并保存到数据库的方法

    使用jxl库,可以轻松地读取Excel文件中的数据,并将其保存到数据库中。 现在,让我们来看看如何使用Java和jxl库来读取Excel文件,并将其保存到数据库中。首先,我们需要导入jxl库的jar包,并将其添加到我们的项目中...

    jxl 导出 excel

    "jxl 导出 excel"的标题和描述暗示了我们将会讨论如何使用JXL库从数据库中导出数据到Excel文档的过程。这个过程涉及到Java编程、数据库操作以及JXL库的使用。 首先,我们需要了解JXL库。JXL是一个开源库,它提供了...

    jxl实现excel上传下载全部功能

    在Java编程环境中,JXL库是一个非常流行的工具,用于读取、写入和修改Excel文件。JXL提供了方便的API,使得开发者可以轻松地处理Excel数据,而无需依赖Microsoft Office套件。本教程将深入探讨如何使用JXL库实现...

    jxl导出excel

    这个工具类在处理大量数据时特别有用,比如从数据库中提取数据并以易于阅读的Excel表格形式提供给用户。 描述中提到的“导出详细说明,及相关代码和jar”,意味着我们将在接下来的内容中探讨如何使用jxl进行Excel...

    数据库内容导入到Excel jxl.jar包

    首先,从数据库中提取数据,然后使用jxl库将数据写入Excel工作表。这通常涉及到数据库查询、结果集遍历以及使用jxl的API创建和写入工作表。 以下是一个简单的示例,展示了如何使用jxl将数据写入Excel: ```java ...

    jxl从数据库导出到excel工具包

    2. **数据库操作**:在实际应用中,通常需要先从数据库中查询数据,再使用jxl将其写入Excel。这可能涉及到JDBC(Java Database Connectivity)接口,用于连接和操作数据库。 3. **结合MVC框架**:如上述描述所述,...

    java利用jxl生成excel文件

    在实际开发中,可以根据业务需求灵活调整上述代码,例如从数据库获取数据,动态生成Excel内容。`writeExcelByJXL`这个文件可能是一个完整的Java程序,包含了这些功能。在运行此程序前,确保正确配置了JXL库,并根据...

    用java实现把excel数据导入到mysql数据库中.pdf

    在实现 Excel 数据导入到 MySQL 数据库时,需要使用 Java 语言来读取 Excel 数据,然后将数据写入到 MySQL 数据库中。下面是一个简单的示例代码: ```java public class ExcelToMysql { public static void main...

Global site tag (gtag.js) - Google Analytics