最近做项目需要用到批量导入数据库的功能,最后选择了比较常规的方式,使用了jxl组建来操作excel文件,这里做下小小的记录以便今后查阅。
1、读取Excel中的文件
Excel中有文件,工作簿,和单元格的概念,这里都有别的不多说了直接上代码。
package com.wsp.importFromExcel;
import java.io.File;
import java.io.IOException; import java.util.ArrayList; import java.util.List; import jxl.Cell; import jxl.Sheet; import jxl.Workbook;public class UploadAction{
public List readDeptInfoVO(File file) throws Exception { List listdeps = new ArrayList(); StringBuffer sb = new StringBuffer();//创建excel文件的引用 Workbook wb = null;
try { // 获取Excel文件对象wb = Workbook.getWorkbook(file);
if (wb != null) { // 获取了Excel文件就可以获取Excel文件中的sheet工作簿了Sheet[] sheets = wb.getSheets();
if (sheets != null && sheets.length != 0) { // 获取该工作表内的行数 int rows = sheets[0].getRows();//sheets[0]表示第1个工作簿 // 遍历行 for (int j = 1; j < rows; j++) { // 获取当前行的所有单元格 Cell[] cells = sheets[0].getRow(j); if (cells != null && cells.length != 0) { System.out.println("Excel中的内容=cells[0]=="+cells[0].getContents().trim()); System.out.println("Excel中的内容=cells[1]=="+cells[1].getContents().trim()); System.out.println("Excel中的内容=cells[2]=="+cells[2].getContents().trim()); System.out.println("Excel中的内容=cells[3]=="+cells[3].getContents().trim()); System.out.println("Excel中的内容=cells[4]=="+cells[4].getContents().trim()); System.out.println("Excel中的内容=cells[5]=="+cells[5].getContents().trim()); System.out.println("Excel中的内容=cells[6]=="+cells[6].getContents().trim()); System.out.println("Excel中的内容=cells[7]=="+cells[7].getContents().trim()); System.out.println("Excel中的内容=cells[8]=="+cells[8].getContents().trim()); System.out.println("Excel中的内容=cells[9]=="+cells[9].getContents().trim()); } }}
} } catch (Exception e) { System.out.println(e.getMessage()); } finally { wb.close(); } return listdeps; } public static void main(String args[]) { File file=new File("F:"+File.separator+"import.xls"); try { file.createNewFile(); new UploadAction().readDeptInfoVO(file); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
2、想Excel中写入内容
package com.wsp.importFromExcel;
import java.io.File;
import java.io.IOException; import java.util.ArrayList; import java.util.List; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook;public class ImportAction {
public List writeDeptInfoVO(File file) throws Exception { List listdeps = new ArrayList(); StringBuffer sb = new StringBuffer(); // 创建用于写入内容的Excel文件的引用 WritableWorkbook wb=null; try { // 获取Excel文件 wb=Workbook.createWorkbook(file); if (wb != null) { // 通过Excel文件获取第一个工作簿sheet WritableSheet sheets=wb.createSheet("sheet1", 0); //构建Excel表的表头 //Label label=new Label(i,j);//i表示列的位置,j表示行的位置 Label label1=new Label(0, 0, "用户名称");//第j行,第1列中的内容 sheets.addCell(label1); Label label2=new Label(1, 0, "用户手机");//第j行,第2列中的内容 sheets.addCell(label2); Label label3=new Label(2, 0, "用户邮箱");//第j行,第0列中的内容 sheets.addCell(label3); Label label4=new Label(3, 0, "用户地址");//第j行,第3列中的内容 sheets.addCell(label4); Label label5=new Label(4, 0, "用户生日");//第j行,第4列中的内容 sheets.addCell(label5); // rows表示需要写入Excel文件的行数 int rows = 5; for (int j = 1; j < rows; j++) {//j表示行数,i表示列数 Label label11=new Label(0, j, "用户名称");//第j行,第0列中的内容 sheets.addCell(label11); Label label21=new Label(1, j, "用户手机");//第j行,第0列中的内容 sheets.addCell(label21); Label label31=new Label(2, j, "用户邮箱");//第j行,第0列中的内容 sheets.addCell(label31); Label label41=new Label(3, j, "用户地址");//第j行,第0列中的内容 sheets.addCell(label41); Label label51=new Label(4, j, "用户生日");//第j行,第0列中的内容 sheets.addCell(label51); } } } catch (Exception e) { System.out.println(e.getMessage()); } finally { wb.write(); wb.close(); } return listdeps; } public static void main(String args[]) { File file=new File("F:"+File.separator+"import2.xls"); try { file.createNewFile(); new ImportAction().writeDeptInfoVO(file); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }