同样是一个简单的针对Excel的导入操作,这里只是简单的列出了和前面一个一样的操作步骤.程序当中应该相当详细的说明了一切,希望大家可以看明白,都是相当基础相当简单的.接下来会扩展开去,进行WEB操作的.
- package com.lip.main;
- import java.io.File;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import jxl.Cell;
- import jxl.Sheet;
- import jxl.Workbook;
- public class ImportExcel {
- /**
- * (最基本的导入操作.)
- *
- * Author lip(Lizg)
- * 2009-1-9
- *
- * 同上一个一样,这一个也是简单的导入操作,其实同样是最基本的需求而已,
- * 再加上一些处理就可以了,比如自己字段的处理,导入文件是否保存下来之类的.
- *
- * 这里同样以一个main来说明一下其基本的操作过程.
- *
- * 导入,就是从Excel中去取出数据,然后写入到数据库(这里就是数据库操作吧,相对于其他的Excel间操作之类的就省略)
- *
- * 第一,同样是先准备好数据来源.这里不是建立好Excel,而是在那个盘符下建立一个导入Excel,并有数据,然后导入即可.
- *
- * 接上一个例子.这一个同样是对MySQL操作,当然可以换成其他的诸如Oracle,SQLServer之类的.
- *
- */
- public static void main(String[] args) {
- //(第一:)首先申明读取的的文件来源.再次申明,这里的都是直接的,我认为最基本但是又容易看懂的.
- File importExcel = new File("c://导入测试.xls");
- //这里确认这个文件是存在的,当然可以判断一下.用file.exists().看其是否存在,
- /**(第一步完成)*/
- //(第二:)然后就先来连接数据库吧.同样是对同一个数据库操作,只是这里新增加一个表.见最下面.
- try{
- //数据库连接
- Class.forName("com.mysql.jdbc.Driver").newInstance();
- Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:5885/excel", "root", "5885");
- PreparedStatement prep = conn.prepareStatement("insert into importexcel (id,name) values (?,?)");
- //这里是插入,用这个来的比较方便,所以就直接用这个接口来操作吧.
- //System.out.println("Success");
- /**(第二步完成)*/
- /**
- * 到这里,已经连接好了数据库了,然后就是上传了,这里的sql语句就是插入,很简单,这里来看看读出数据.
- *
- */
- //(第三步:)操作Excel文件读出里面的数据,其实思想是一样的,就是普通思维,
- //获取Excel文件---->读取每一个工作单元(就跟前一个导入一样的是每一个整体表格)---->读取(一个表格)每一行的内容------(读取完成.)
- //首先是获取文件,也就是上面的Excel文件,这里是或者这个Excel文件.然后就是对之进行操作.
- Workbook workBook = Workbook.getWorkbook(importExcel);
- //其次就是获取这个Excel文件的工作表格.这里就基本处理,当然可以不用数组形式,因为只有第一个工作表格有数据,其他两个没有,
- //但是为了一般化,就仍然这样操作.
- Sheet[] sheet = workBook.getSheets();
- //这里大家看一下API就能够知道,其实可以通过参数来获得哪一个表格就行了,
- //比如Sheet sheet = workBook.getSheet(1);
- //这里就到了最后了,这里的最后就是对于工作表格的最后,既然是用数组来得到的,当然会对每一个工作表格进行读取操作,
- //这里的读取就是读取每一个工作表格的每一行数据.
- int sheet_i_num = 0;//获取工作表格的行数
- String id = "";
- String name = "";//用来得到每一个单元格的内容,下面用到.
- if(sheet!=null&&sheet.length>0){//判断一下
- for(int sheetNum=0;sheetNum < sheet.length; sheetNum++){//获得有多少个工作表格,对每一个操作.
- //(3.1这里首先要得到要读取的工作表格有多少行.)
- sheet_i_num = sheet[sheetNum].getRows();
- //接下来就是对每一行进行的去数据了,
- for(int rowNum = 0; rowNum < sheet_i_num ; rowNum++){
- //这里就开始对每一个单元格进行操作了.
- //显然,sheet[]第一个参数就是哪一个工作表格,然后getRow的就是哪一行.然后就赋值给Cell进行操作.
- Cell[] cells = sheet[sheetNum].getRow(rowNum);
- //这里就开始读出每一行的数据了,这里不做其他的判断,比如,数据是整数否,是否超出字符串长度,是否为空等等,
- id = cells[0].getContents();
- name = cells[1].getContents();//这里就是对每一个列来获取,cells就是把这一行的某一列赋值给你所要操作的值.
- //数据是取到了,然后就是直接插入到数据库当中了,
- prep.setInt(1, Integer.parseInt(id));
- prep.setString(2, name);
- prep.executeUpdate();
- System.out.println(id+"--------"+name);
- }
- }
- }
- workBook.close();
- prep.close();
- conn.close();
- }catch(Exception e){
- System.out.println(e.getMessage());
- }
- finally{
- }
- }
- }
- /**
- 第一步:建立数据表:(表名称叫做importexcel)
- DROP TABLE IF EXISTS `importexcel`;
- CREATE TABLE `importexcel` (
- `Id` int(11) NOT NULL auto_increment,
- `name` varchar(50) default NULL,
- PRIMARY KEY (`Id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 这个时候,里面什么都没有,
- 可以用select看看,
- */
- /*
- 然后就是操作这个数据表字段.往里面添加数据,这里明显是 只有两个字段,第一个是ID,(int整数类型)
- 第二个是NAME,(varchar字符串类型)
- 很明显都能过看得出来.
- 然后再来一次select试试.
- */