读书人

导入exce报表中的数据l到数据库

发布时间: 2013-10-30 12:56:21 作者: rapoo

导入exce表格中的数据l到数据库

因为我的项目是JavaWeb的,所有是通过浏览器导入数据库到服务器端的数据库,这里我们采用struts来帮助我们完成。

1:首先定义一个文件上传的jsp页面。把我们的数据先上传到服务器端。

package action;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import jxl.Cell;import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffException;import model.Person;import org.apache.struts2.ServletActionContext;import service.PersonService;import service.impl.PersonServiceImpl;import com.opensymphony.xwork2.ActionSupport;//将excel导入到数据库,对于日期类型的有问题,只要在excel中要求日期的类型为2012-12-12就可以了,一定不能是2012/12/12 public class ExcelUpload extends ActionSupport {private File file;private String fileFileName;private String fileContentType;//后面3个成员变量的命名是有规律的,不能随便起名字private String root; public String getRoot() {return root;}public void setRoot(String root) {this.root = root;}public File getFile() {return file;}public void setFile(File file) {this.file = file;}public String getFileFileName() {return fileFileName;}public void setFileFileName(String fileFileName) {this.fileFileName = fileFileName;}public String getFileContentType() {return fileContentType;}public void setFileContentType(String fileContentType) {this.fileContentType = fileContentType;}@Overridepublic String execute() throws Exception {uploadExcel2PC(); //上传excel文件到服务器的电脑上String[][] str = getDataFromExcel();//读取excel文件,并且把数据读到一个二维数组里面去。//printData(str); //打印一下数据。测试用writeData2DB(str);//把数据写到数据库。return SUCCESS;}private void printData(String[][] str) {for (int j = 0; j < str.length; j++) {  for (int i = 0; i < str[1].length; i++) { System.out.print(str[j][i] + "    "); }System.out.println();}}private void uploadExcel2PC() throws FileNotFoundException, IOException {root=ServletActionContext.getRequest().getRealPath("/upload");new File(root).mkdirs();InputStream is=new FileInputStream(file);//目标文件,存到目录里面File destFile=new File(root,fileFileName);OutputStream os=new FileOutputStream(destFile);byte[] buffer=new byte[400];int length=0;while(-1!=(length=is.read(buffer))){os.write(buffer,0,length);}is.close();os.close();}public String[][] getDataFromExcel() throws BiffException, IOException{File file = new File(root + "/"  + fileFileName); Workbook book = Workbook.getWorkbook(file);//读取excel文件  Sheet sheet = book.getSheet(0);     //这里是获取第一个工作表格int rows = sheet.getRows();//获取总的行数  int cols = sheet.getColumns();//获取总的列数  String[][] str = new String[rows][cols];//定义一个二维数组for(int i=0;i<str.length;i++){//读取单元格内容并存放到二维数组中 默认从第一行第一列读取      for(int j=0;j<str[i].length;j++){                    Cell cell = sheet.getCell(j,i);str[i][j] = cell.getContents();}    }if (file.exists()) {file.delete();}return str;}private void writeData2DB(String[][] str) {for (int j = 1; j < str.length; j++) {  //从第二行开始读取Person person=new Person();person.setUsername(str[j][1]);person.setPassword(str[j][2]);person.setAge(Integer.parseInt(str[j][3]));person.setRegisterDate(StringToDate(str[j][4]));PersonService personService=new PersonServiceImpl();personService.savePerson(person);} }public  java.sql.Date StringToDate(String dateStr){DateFormat dd=new SimpleDateFormat("yyyy-MM-dd");java.util.Date date=null;try {date = dd.parse(dateStr);} catch (ParseException e) {e.printStackTrace();}java.sql.Date date2 = new java.sql.Date(date.getTime()); //java.util.date --->java.sql.datereturn date2;}}

4:大功告成。当然在这里我没有写保存数据到数据库的代码。这不是这个帖子的重点。相信大家都会。










读书人网 >其他数据库

热点推荐