⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 operaexcel.java

📁 这是我自己做的一个选课系统
💻 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 + -