📄 operaexcel.java
字号:
package org.chooseClass.jExcelOpera;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import org.chooseClass.database.DBConnect;
public class OperaExcel {
public boolean operaExcelData(String filePath,String filename,String type) throws Exception{
Cell cell = null;
String sql = null;
String insertDate = "";
try {
// 加载驱动
DBConnect dbc = new DBConnect();
//Connection con =(Connection) new DBConnect().getConnection();
// 使用事务。不用也无所谓
//con.setAutoCommit(false);
//Statement smt = con.createStatement();
// if (smt != null) System.out.println("smt is ok!");
// 加载excel文件
//ServletContext sc = ServletConfig().getServletContext();
//String realpath = ServletContext.
InputStream fs = new FileInputStream(filePath+"upload/"+filename);
// 得到 workbook
Workbook wb = Workbook.getWorkbook(fs);
/*
* 取得sheet,如果你的workbook里有多个sheet 可以利用 wb.getSheets()方法来得到所有的。
* getSheets() 方法返回 Sheet[] 数组 然后利用数组来操作。就是多次循环的事。
*/
Sheet sh = wb.getSheet(0);
// 利用 sheet 的名字做表名创建数据库表。你可以自己规定
//sql = "CREATE TABLE "
// + sh.getName()
// + " ("
// + "name varchar(50),sex varchar(10),age varchar(5),address varchar(30));";
//smt.execute(sql);
/*
* 开始循环,取得 cell 里的内容,这里都是按String来取的 为了省事,具体你自己可以按实际类型来取。或者都按
* String来取。然后根据你需要强制转换一下。
*/
for (int i = 1; i < sh.getRows(); i++) {
for (int j = 0; j < sh.getColumns(); j++) {
cell = sh.getCell(j, i);
if (j != sh.getColumns() - 1)
// System.out.print(cell.getContents() + ",");
insertDate += "'" + cell.getContents() + "',";
else
insertDate += "'" + cell.getContents() + "'";
// System.out.print(cell.getContents());
}
/*
* 利用循环取每一行的数据。然后开始构造SQL语句。你可以
* 用自己的方法。这个方法我觉得比较偷懒。
*/
if(type.equalsIgnoreCase("student")){
sql = "INSERT INTO student (学号,姓名,密码,专业号,性别,系部号)"
+ " VALUES(" + insertDate + ");";
}else if(type.equalsIgnoreCase("teacher")){
sql = "INSERT INTO teacher (教师编号,教师名,密码)"
+ " VALUES(" + insertDate + ");";
}else if(type.equalsIgnoreCase("class")){
sql = "INSERT INTO class (课程号,课程名,教师号,系部号,开课时间,开课地点,学分,人数,学年,学期,限选系号)"
+ " VALUES(" + insertDate + ");";
}
dbc.executeUpdate(sql);
//smt.execute(sql);
/*这里把 insertDate设置为空。不然 insertData下次
* 还会叠加上次的内容。也就失去了我们的目的。
*/
insertDate = "";
}
/*
* 提交事务
*/
//con.commit();
//con.close();//关闭数据库连接
wb.close();//关闭打开的文件,切记。切记
// System.out.println(insertDate);
// start sql;
} catch (IOException ex) {
ex.printStackTrace();
return false;
} catch (BiffException ex) {
ex.printStackTrace();
return false;
}
catch (ClassNotFoundException ex) {
System.out.println("class not found");
return false;
} catch (SQLException ex) {
ex.printStackTrace();
return false;
}
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -