1. seu argumento é o nome da tabela, nome do arquivo excel e o nome da folha.
2. nulos no SQL nula-excel é armazenado no banco de dados.
O número de colunas na planilha, criar dinamicamente um nome de tabela de banco de dados, campo de banco de dados chamado name1, name2 ......
4. O valor da tabela excel entrada criados dinamicamente.
O primeiro passo para consultar todos os dados de destino especificado tabela do Excel: Crie List <String> tipo de método de retorno, passando parâmetros para nome do arquivo excel e o nome da folha, utilizando pasta de trabalho para abrir o arquivo, você precisa adicionar poi contam com o uso do livro pode abrir excel versão 2003 e 2007, para dar o número de linhas e colunas, e um loop for, adicionando o conteúdo de cada plano na unidade de excel Gerry dentro da lista.
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;
}
O segundo passo para criar uma tabela dinâmica: escrever um método para criar uma tabela de participação em massa para o nome da tabela, chame o método de conexão de banco de dados, declaração escrita sql, sql usando costura, para a circulação para criar os campos da tabela de banco de dados, o número de ciclos para obter o número de colunas na segunda etapa com "nome" + i na forma de um campo pode ser chamado name1, name2 ...., preste atenção para a linguagem normativa ao escrever sql, instrução SQL para ser capaz de montar em plenas condições de funcionamento para executar instruções SQL usando prepareStatement. 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());
}
O terceiro passo é adicionar declaração mysql dados: escrever o método de inserção, o parâmetro é o nome da tabela, declaração splicing sql, INSERT INTO nome da tabela (name1, name2 ...) valores, Porque você quer (NULLIF ( ''), ...?) o valor nulo para um valor nulo, utilizar os valores NULLIF nulos no banco de dados (nulo).
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();
}
O quarto passo na lista de dados e a instrução SQL dados combinado é inserido mysql alcançado, a lista de loop, executar inserção instrução SQL, inserção de dados em cada ciclo, o número de ciclos do número de colunas em Excel usando ps.setString (j + 1, list.get (i ++)), colunas j para o primeiro disco, i é o i-ésimo lista de valores.
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();
}
}