1.その引数はテーブル名、Excelファイル名とシート名です。
ヌルエクセルSQLの2ヌルは、データベースに格納されています。
シート内の列の数は、動的にデータベーステーブル名を作成し、データベースのフィールド名1、名前2という名前......
4.入Excelの表の値を動的に作成します。
すべてのデータを照会するための最初のステップは、ターゲットExcelの表を指定:Excelファイル名とシート名にパラメータを渡す、戻り方法の一覧<文字列>タイプを作成し、ファイルを開くためにワークブックを使用して、あなたはポイを追加する必要がワークブックの使用に依存しているExcelを開くことができます2003年および2007年のリリースバージョンは、リスト内のエクセルジェリー部の各平面の内容を追加して、行と列の数、及びためのループを与えます。
public static List<String> getAllByExcel(String file, String sheet){
List<String> list = new ArrayList<String>();
DBhelper db = new DBhelper();
try {
Workbook rwb = Workbook.getWorkbook(new File(file));
Sheet rs=rwb.getSheet(sheet);
clos=rs.getColumns();//得到所有列
int rows =rs.getRows();
String str[] = new String[clos+1];
for(int n=0;n<clos;n++){
str[n]="name"+n;
}
for(int i=0;i<rows;i++){//i行数从第0行开始 j 列数
for(int j=0;j<clos;j++){
String arr[ ]=new String[clos+1];
arr[j] =rs.getCell(j,i).getContents();
System.out.println(str[j]+":"+arr[j]); //字段名加数据内容
list.add( arr[j]); //得到表中所有数据
}
}
rwb.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
動的テーブルを作成する第二の工程:、テーブル名の質量参加のテーブルを作成する方法を記述ステッチ使用して、データベース接続方法、書き込みSQLステートメントは、SQLを呼び出して、第二段階の列数を取得するために、データベーステーブルのフィールド、サイクル数を作成するために、循環用「名前」でフィールドの形で+私は、SQLを記述する場合、SQLステートメントは、のprepareStatementを使用してSQL文を実行するために実行することが十分に可能に組み立てることができるように規範的な言語にNAME1、NAME2 ......、注意を払う名前を付けることができます。ps.executeUpdate(SQL)。
String sql= null;
try {
sql = "create table if not exists "+tablename+" ";
sql+="(";
for(int i=1;i<=clos;i++){
sql+="name"+i +" varchar(100)";//表字段
if(i<clos){
sql+=",";
}
}
sql+=")DEFAULT CHARSET=utf8;";
PreparedStatement ps=null;
ps=db.conn.prepareStatement(sql);
ps.executeUpdate(sql);
ps.close();
} catch (Exception e) {
System.out.println("建表失败"+e.getMessage());
}
第3のステップは、データのmysqlのステートメントを追加することです:insertメソッドを書く、パラメータはテーブル名にテーブル名、スプライシングSQL文、インサートである(NAME1、NAME2 ...)の値、あなたがしたいので(NULLIF(「」)、...?)ヌル値にヌル値は、データベース(ヌル)にNULLIFヌル値を使用します。
try {
sql="insert into "+tablename+"(";
for(int i=1;i<=clos;i++){
sql+="name"+i;
if(i<clos){
sql+=",";
}
}
sql+=")values(";
for(int i=1;i<=clos;i++){
sql+="NULLIF(?,'')";
if(i<clos){
sql+=",";
}
}
sql+=");";
db.conn.close();
} catch (Exception e) {
e.printStackTrace();
}
第4のデータリストのステップと、SQL文の結合データをMySQLの中に挿入され、ループのリストを達成し、SQL文の挿入、各サイクルにおける挿入データ、ps.setStringを使用してExcelの列数のサイクル数を実行します(J + 1、list.get(I ++))最初のレコードのために、j列、iが値のi番目のリストです。
List<String> listExcel=ExcelService.getAllByExcel("D://xx.xlsx","Sheet1");//读excel表中的数据
ExcelService.CreateTable(tableName);//创建数据库表
String sql=ExcelService.insert(tableName);
for(int i=0;i<listExcel.size();){
PreparedStatement ps=null;
try {
ps=db.conn.prepareStatement(sql);
if(listExcel!=null){
for(int j=0;j<ExcelService.clos;j++){
ps.setString(j+1,listExcel.get(i++));
}
}
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}