banco de dados Excel MySQL para criar dinamicamente tabelas, inserir dados em Excel e criados dinamicamente tabela MySQL

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();
    }
}
Publicado 36 artigos originais · ganhou elogios 19 · vê 30000 +

Acho que você gosta

Origin blog.csdn.net/qq_27182767/article/details/84348258
Recomendado
Clasificación