求一个通过jsp把excel导入到sql server的例子。 我现在已经做好上传的功能了,上传后的excel文件保存在项目的根目录下。 求个例子,最好jsp页面也上。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用jxl或者poi读取excel然后一行一行的用sql插入到表里吧jxl和poi的例子百度一下很多 以前用jxl读取Excel操作的部分程序,希望对你有用java.io.File f= new java.io.File(filename2); jxl.Workbook rwb = Workbook.getWorkbook(f); Sheet rs = rwb.getSheet(0); String sheetname=rs.getName(); int rscol=rs.getColumns(); int rsrow=rs.getRows(); String pn_sn=""; String pn_name=""; String pn_plate=""; String pn_standards=""; for(int i=1;i<rsrow;i++){ Cell[] cell=rs.getRow(i); pn_sort=cell[0].getContents().trim(); pn_sn=cell[1].getContents().trim(); pn_name=cell[2].getContents().trim(); pn_standards=cell[3].getContents().trim(); } 这段代码得怎么改才可以?现在的情况是我已经做好上传的功能了,我要让他去读取我那个上传了的xls文件package source;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import jxl.Cell;import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffException;public class TestExcel { /** * @param args */ public static void main(String[] args) { // TODO 自动生成方法存根 Cell cell = null; String sql = null; String insertDate = ""; try { // 加载postgresql驱动 Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection( "jdbc:postgresql://localhost:5432/mydb", "postgres", "postgres"); // 使用事务。不用也无所谓 con.setAutoCommit(false); Statement smt = con.createStatement(); // if (smt != null) System.out.println("smt is ok!"); // 加载excel文件 InputStream fs = new FileInputStream("data/user.xls"); // 得到 workbook Workbook wb = Workbook.getWorkbook(fs); /* * 取得sheet,如果你的workbook里有多个sheet 可以利用 wb.getSheets()方法来得到所有的。 * getSheets() 方法返回 Sheet[] 数组 然后利用数组来操作。就是多次循环的事。 */ Sheet sh = wb.getSheet(0); // 利用 sheet 的名字做表名创建数据库表。你可以自己规定 sql = "CREATE TABLE " + sh.getName() + " (" + "name varchar(50),sex varchar(10),age varchar(5),address varchar(30));"; smt.execute(sql); /* * 开始循环,取得 cell 里的内容,这里都是按String来取的 为了省事,具体你自己可以按实际类型来取。或者都按 * String来取。然后根据你需要强制转换一下。 */ for (int i = 0; i < sh.getRows(); i++) { for (int j = 0; j < sh.getColumns(); j++) { cell = sh.getCell(j, i); if (j != sh.getColumns() - 1) // System.out.print(cell.getContents() + ","); insertDate += "'" + cell.getContents() + "',"; else insertDate += "'" + cell.getContents() + "'"; // System.out.print(cell.getContents()); } /* * 利用循环取每一行的数据。然后开始构造SQL语句。你可以 * 用自己的方法。这个方法我觉得比较偷懒。 */ sql = "INSERT INTO " + sh.getName() + "(name,sex,age,address)" + " VALUES(" + insertDate + ");"; smt.execute(sql); /*这里把 insertDate设置为空。不然 insertData下次 * 还会叠加上次的内容。也就失去了我们的目的。 */ insertDate = ""; } /* * 提交事务 */ con.commit(); con.close();//关闭数据库连接 wb.close();//关闭打开的文件,切记。切记 System.out.println("OK!"); // System.out.println(insertDate); // start sql; } catch (IOException ex) { ex.printStackTrace(); } catch (BiffException ex) { ex.printStackTrace(); } catch (ClassNotFoundException ex) { System.out.println("class not found"); } catch (SQLException ex) { ex.printStackTrace(); } }} 什么意思 你把他读取EXCEL文件的代码 拿出来就行了然后你把读到的值封装成对象 放到集合里面 一次性提交就好了excel 分2种格式 03之前是 .xls 07之后是.xlsm 网上的例子读取excel文件都是直接指定某盘下的某个excel文件,这样根本没用啊,我要的是它能读取我上传了的那个excel,问题就是怎么让java知道我上传了哪个excel文件。 Dreamweaver简历框架后为何看不到<frameset></frameset>的代码 apache+tomcat+jk集群的一个小问题 JSP错误。。。。急!!!!!!! java jsp 请大虾们给点意见?。。。。进就有分!!!! 大家好,请帮帮小弟 请问哪里有jsp写的vod视频点播系统可以下载? 一般去公司面试的时候要考些什么? 用组件jspsmart下载文本文件的问题! 我在学习java怎么向jsp转变。 关于SERVLET上传文件的问题 初学Hibernate貌似出现驱动错误
jxl和poi的例子百度一下很多
jxl.Workbook rwb = Workbook.getWorkbook(f);
Sheet rs = rwb.getSheet(0);
String sheetname=rs.getName();
int rscol=rs.getColumns();
int rsrow=rs.getRows();
String pn_sn="";
String pn_name="";
String pn_plate="";
String pn_standards=""; for(int i=1;i<rsrow;i++){
Cell[] cell=rs.getRow(i);
pn_sort=cell[0].getContents().trim();
pn_sn=cell[1].getContents().trim();
pn_name=cell[2].getContents().trim();
pn_standards=cell[3].getContents().trim();
}
package source;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import jxl.Cell;import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffException;public class TestExcel { /** * @param args */ public static void main(String[] args) { // TODO 自动生成方法存根 Cell cell = null; String sql = null; String insertDate = ""; try { // 加载postgresql驱动 Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection( "jdbc:postgresql://localhost:5432/mydb", "postgres", "postgres"); // 使用事务。不用也无所谓 con.setAutoCommit(false); Statement smt = con.createStatement(); // if (smt != null) System.out.println("smt is ok!"); // 加载excel文件 InputStream fs = new FileInputStream("data/user.xls"); // 得到 workbook Workbook wb = Workbook.getWorkbook(fs); /* * 取得sheet,如果你的workbook里有多个sheet 可以利用 wb.getSheets()方法来得到所有的。 * getSheets() 方法返回 Sheet[] 数组 然后利用数组来操作。就是多次循环的事。 */ Sheet sh = wb.getSheet(0); // 利用 sheet 的名字做表名创建数据库表。你可以自己规定 sql = "CREATE TABLE " + sh.getName() + " (" + "name varchar(50),sex varchar(10),age varchar(5),address varchar(30));"; smt.execute(sql); /* * 开始循环,取得 cell 里的内容,这里都是按String来取的 为了省事,具体你自己可以按实际类型来取。或者都按 * String来取。然后根据你需要强制转换一下。 */ for (int i = 0; i < sh.getRows(); i++) { for (int j = 0; j < sh.getColumns(); j++) { cell = sh.getCell(j, i); if (j != sh.getColumns() - 1) // System.out.print(cell.getContents() + ","); insertDate += "'" + cell.getContents() + "',"; else insertDate += "'" + cell.getContents() + "'"; // System.out.print(cell.getContents()); } /* * 利用循环取每一行的数据。然后开始构造SQL语句。你可以 * 用自己的方法。这个方法我觉得比较偷懒。 */ sql = "INSERT INTO " + sh.getName() + "(name,sex,age,address)" + " VALUES(" + insertDate + ");"; smt.execute(sql); /*这里把 insertDate设置为空。不然 insertData下次 * 还会叠加上次的内容。也就失去了我们的目的。 */ insertDate = ""; } /* * 提交事务 */ con.commit(); con.close();//关闭数据库连接 wb.close();//关闭打开的文件,切记。切记 System.out.println("OK!"); // System.out.println(insertDate); // start sql; } catch (IOException ex) { ex.printStackTrace(); } catch (BiffException ex) { ex.printStackTrace(); } catch (ClassNotFoundException ex) { System.out.println("class not found"); } catch (SQLException ex) { ex.printStackTrace(); } }}
然后你把读到的值封装成对象 放到集合里面 一次性提交就好了
excel 分2种格式 03之前是 .xls 07之后是.xlsm