logo资料库

javaWeb开发中从excel将数据导入保存在数据库中.doc

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
关于 javaWeb 开发中利用 Jfree 控件从 excel 将数据导入并 保存到数据库中的操作和注意事项 在 JavaWeb 开发 MIS 系统很多的时候都需要将数据一条条 的填入到相应的控件中并获取值来进行数据库中的数据的 插入,这样的界面是少不了的但是我们与此同时也是很希望 能够进行数据的批处理,比如批量数据的导入和批量数据的 导入。 在这里我先描述一下我们想实现的功能: 将规定格式的 excel 文件比如: 编号 药名 DR0008 板蓝根颗粒 规格 20 袋*10 克 四川蜀中制药有限公司 生产商 批文 国药准字 H20020120 DR0009 云南白药气雾剂 85g+30g 云南白药集团股份有限公 司 国药准字 Z53021103 现在要将这样格式的数据保存在数据库中。 基本的思路: 我们在数据库中首先是建立一张相应的表然后我们将数据读取出 来一条条的执行便可,这样就基本的可以实现将数据保存在 数据库中了 方法:利用 jxl.jar 这个包将相应的 excel 文件上传到服务器 Tomcat 服务器(我用的是 tomcat 服务器)然后再获取服务器上该 文件的地址将数据解析出来分别插入到数据库中这样便完 成了要做的工作 步骤:(1)新建一个 web 工程(我的开发工具是 MyEclipse 8.5 1
Tomcat5.X MySql Excel2003) (2)将所需要的 jxl.jar 包导入到需要存放的地方(包自己下载 网 上到处都是) (3)建 excel 文件上传到服务器(我将部分代码粘贴出来 仅供参 考) String fileUrl = ""; DiskFileItemFactory dfif = new DiskFileItemFactory(); ServletFileUpload sfu = new ServletFileUpload(dfif); try { // 开始解析解析的结果的是一个FileItem的 集合 // 每一个FileItem代表表单中的一个域 List items = sfu.parseRequest(request); for (int i = 0; i < items.size(); i++) { FileItem item = (FileItem) items.get(i); if (item.isFormField()) { String fieldName = 2
item.getFieldName(); String value = item.getString(); } else { // 文件名, 对于某些操作系统,返回的 // 文件名包含了路径。 // d:\\dir1\t1.jpg String filename1 = item.getName(); String filename = filename1.substring(filename1 .indexOf("\\") + 1); 该是 // 选择一个存放文件的目录,该目录应 // 服务器上的某个目录 // getRealPath("upload"):获得服 务器上的某个目录的 // 绝对路径。 String path1 = getServletContext() .getRealPath("upload"); 3
// 将解析之后的文件存放到某个目录 item.write(new File(path1 + "/" fileUrl = path1 + "/" + filename; 下。 + filename)); } } } catch (Exception e) { throw new ServletException(e.getMessage()); } 上面你也许需要建立一个服务器中装载上传文件的文件,注意路径 的问题 (4)建服务器上面的刚刚上传的目标文件的路径获取到并加载到 这里来 这个地方我用一个工具类: package util; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; 4
import java.util.List; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; public class ImportExcel { public List> getContent(String fileUrl) { InputStream is = null; List> sheetList = new ArrayList>(); // 获得要导入的文件 Workbook wk = null; try { is = new FileInputStream(fileUrl); wk = Workbook.getWorkbook(is); // 加载到工作薄中 Sheet sheet = wk.getSheet(0); // 获取工作薄中的指定的工作表 int columns = sheet.getColumns(); 5
// 获取工作表的列数 int rows = sheet.getRows(); // 获取工作表的行数 List colNames = new ArrayList(); // 这个是表头 将这个表头装到集合中去 for (int j = 0; j < columns; j++) { Cell cell = sheet.getCell(j, 0); colNames.add(cell.getContents()); } sheetList.add(colNames);// 表中已经装 入了上面的表头 for (int i = 1; i < rows; i++) { // 这里由于上面将第一行的表头已经装在带工 作表中了所以从第二行开始 boolean flag = false; // 设置一个标志位 如果表中没有元素这就是 false 如果有则改为true List rowContent = new ArrayList(); // 每一行创建一个集合 放到sheetList中去 for (int j = 0; j < colNames.size(); j++) { 6
Cell cell = sheet.getCell(j, i);// 前面是列后面是行 rowContent.add(cell.getContents()); if (cell.getContents() != null && !"".equals(cell.getContents())) { flag = true; } } if (flag) { sheetList.add(rowContent); } } } catch (Exception e) { e.printStackTrace(); } finally { if (wk != null) { wk.close(); } try { is.close(); 7
} catch (IOException e) { e.printStackTrace(); } } return sheetList; } } 下面我 new 了一个对象来用上面那个工具类 ImportExcel importExcel = new ImportExcel(); List> sheetList = importExcel.getContent(fileUrl); //这里面的fileUrl是上面声明的全局变量 //也就是获取的服务器中的上传的目标文件的地址 TDruginfoDAO dao = (TDruginfoDAO) DAOFactory .getInstance(TDruginfoBaseDAO.class); for (int i = 1; i < sheetList.size(); i++) { // 获取每一行的内容new List List sheetList.get(i); rowContents = 8
分享到:
收藏