问题描述
我现在已经做好上传的功能了,上传后的excel文件保存在项目的根目录下。求个例子,最好jsp页面也上。
解决方案
解决方案二:
用jxl或者poi读取excel然后一行一行的用sql插入到表里吧jxl和poi的例子百度一下很多
解决方案三:
引用1楼chen8401314的回复:
用jxl或者poi读取excel然后一行一行的用sql插入到表里吧jxl和poi的例子百度一下很多
我找到的都是把方法写死了的。
解决方案四:
以前用jxl读取Excel操作的部分程序,希望对你有用java.io.Filef=newjava.io.File(filename2);jxl.Workbookrwb=Workbook.getWorkbook(f);Sheetrs=rwb.getSheet(0);Stringsheetname=rs.getName();intrscol=rs.getColumns();intrsrow=rs.getRows();Stringpn_sn="";Stringpn_name="";Stringpn_plate="";Stringpn_standards="";for(inti=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文件packagesource;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.InputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.sql.Statement;importjxl.Cell;importjxl.Sheet;importjxl.Workbook;importjxl.read.biff.BiffException;publicclassTestExcel{/***@paramargs*/publicstaticvoidmain(String[]args){//TODO自动生成方法存根Cellcell=null;Stringsql=null;StringinsertDate="";try{//加载postgresql驱动Class.forName("org.postgresql.Driver");Connectioncon=DriverManager.getConnection("jdbc:postgresql://localhost:5432/mydb","postgres","postgres");//使用事务。不用也无所谓con.setAutoCommit(false);Statementsmt=con.createStatement();//if(smt!=null)System.out.println("smtisok!");//加载excel文件InputStreamfs=newFileInputStream("data/user.xls");//得到workbookWorkbookwb=Workbook.getWorkbook(fs);/**取得sheet,如果你的workbook里有多个sheet可以利用wb.getSheets()方法来得到所有的。*getSheets()方法返回Sheet[]数组然后利用数组来操作。就是多次循环的事。*/Sheetsh=wb.getSheet(0);//利用sheet的名字做表名创建数据库表。你可以自己规定sql="CREATETABLE"+sh.getName()+"("+"namevarchar(50),sexvarchar(10),agevarchar(5),addressvarchar(30));";smt.execute(sql);/**开始循环,取得cell里的内容,这里都是按String来取的为了省事,具体你自己可以按实际类型来取。或者都按*String来取。然后根据你需要强制转换一下。*/for(inti=0;i<sh.getRows();i++){for(intj=0;j<sh.getColumns();j++){cell=sh.getCell(j,i);if(j!=sh.getColumns()-1)//System.out.print(cell.getContents()+",");insertDate+="'"+cell.getContents()+"',";elseinsertDate+="'"+cell.getContents()+"'";//System.out.print(cell.getContents());}/**利用循环取每一行的数据。然后开始构造SQL语句。你可以*用自己的方法。这个方法我觉得比较偷懒。*/sql="INSERTINTO"+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);//startsql;}catch(IOExceptionex){ex.printStackTrace();}catch(BiffExceptionex){ex.printStackTrace();}catch(ClassNotFoundExceptionex){System.out.println("classnotfound");}catch(SQLExceptionex){ex.printStackTrace();}}}
解决方案六:
引用2楼woaijingluan的回复:
引用1楼chen8401314的回复:用jxl或者poi读取excel然后一行一行的用sql插入到表里吧jxl和poi的例子百度一下很多我找到的都是把方法写死了的。
什么意思你把他读取EXCEL文件的代码拿出来就行了然后你把读到的值封装成对象放到集合里面一次性提交就好了excel分2种格式03之前是.xls07之后是.xlsm
解决方案七:
引用5楼zn85600301的回复:
引用2楼woaijingluan的回复:引用1楼chen8401314的回复:用jxl或者poi读取excel然后一行一行的用sql插入到表里吧jxl和poi的例子百度一下很多我找到的都是把方法写死了的。什么意思你把他读取EXCEL文件的代码拿出来就行了然后你把读到的值封装成对象放到集合里面一次性提交就好了excel分2种格式03……
网上的例子读取excel文件都是直接指定某盘下的某个excel文件,这样根本没用啊,我要的是它能读取我上传了的那个excel,问题就是怎么让java知道我上传了哪个excel文件。