base de datos de Excel MySQL para crear dinámicamente tablas, insertar datos en Excel y creado de forma dinámica tabla de MySQL

1. su argumento es el nombre de la tabla, el nombre del archivo de Excel y el nombre de la hoja.

2. nulos en el sql null-Excel se almacenan en la base de datos.

El número de columnas en la hoja, crear dinámicamente un nombre de tabla de base de datos, base de datos denominada campo nombre1, nombre2 ......

4. El valor de la tabla de Excel entrante crea de forma dinámica.

El primer paso para consultar todas destino especificado datos de la tabla de Excel: Crear lista <String> tipo de método de devolución, el paso de parámetros a nombre de archivo de Excel y el nombre de la hoja, usando libro de trabajo para abrir el archivo, es necesario agregar poi confiar en el uso del libro de trabajo puede abrir Excel 2003 y 2007 versión de lanzamiento, para dar el número de filas y columnas, y un bucle, la adición de los contenidos de cada plano en la unidad de excel Gerry dentro de la 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;
}

El segundo paso para crear una tabla dinámica: escribir un método para crear una mesa de participación de las masas para el nombre de la tabla, llame al método de conexión de base de datos, SQL escritura, SQL mediante costura, para su distribución a crear los campos de la tabla de base de datos, el número de ciclos para obtener el número de columnas en la segunda etapa con "nombre" + i en la forma de un campo puede ser identificado nombre1, nombre2 ...., prestar atención a la hora de escribir lenguaje normativo SQL, instrucción SQL para poder ensamblarse en totalmente capaz de funcionar para ejecutar sentencias SQL utilizando 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());
}

El tercer paso es añadir la declaración de datos MySQL: Escribir el método de inserción, parámetro es el nombre de la tabla, la declaración de empalme sql, inserto en nombre de tabla (nombre1, nombre2 ...) los valores, Porque desea (NULLIF ( ''), ...?) el valor nulo en un valor nulo, utilice los valores NULLIF nulos en la base de datos (null).

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();
}

El cuarto paso en la lista de datos y la instrucción SQL de datos combinados se inserta en mysql logrado, la lista de bucle, ejecutar inserto instrucción SQL, insertar datos en cada ciclo, el número de ciclo de la cantidad de columnas en Excel usando ps.setString (j + 1, list.get (i ++)), las columnas j para el primer registro, i es el 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 artículos originales · ganado elogios 19 · Vistas a 30000 +

Supongo que te gusta

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