0

APACHE POIを使用してExcelファイルからデータを読み取りました。今、コンソールにある結果でデータベースを作成したいと思います。私のExcelファイルには6列と8行があります。誰でも私を助けることができますか?私は数日間解決策を見つけようとしています.. :(

4

3 に答える 3

0

あなたが求めているものには多くの解決策があります。オブジェクト モデルを使用して、それを ORM ツールと結び付けることができます。

ただし、ここから始めます。

Apache Jakarta POI を使用して Excel スプレッドシートから外部テーブルを生成する

この記事は Jakarta POI として参照されているため、日付が付けられていますが、概念は引き継がれている可能性があります。また、これは Oracle ベースのアプローチですが、一般化できます。

このフォーラムでより具体的なものが必要な場合は、ニーズに関してより具体的なものを提供する必要があります.

于 2013-04-03T13:16:55.347 に答える
0

リスト(目的に応じて文字列またはオブジェクト)に値を保存するなど、この方法でコンテンツを読んでいると仮定します。

//Some code of yours here
Iterator rows = sheet.rowIterator();
while (rows.hasNext()) {
HSSFRow row = (HSSFRow) rows.next();
Iterator cells = row.cellIterator();

List data = new ArrayList();
while (cells.hasNext()) {
HSSFCell cell = (HSSFCell) cells.next();
data.add(cell);
}

sheetData.add(data);

リストにデータが保存されている場合は、MySQL などのデータベース エンジンを指定します。

static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
static final String DB_URL = "jdbc:mysql://localhost:3306/";
static final String USER = "username";
static final String PASS = "password";

次に、データベースの作成とレコードの挿入に進みます。

 Connection conn = null;
 Statement stmt = null;
Class.forName("com.mysql.jdbc.Driver");


 conn = DriverManager.getConnection(DB_URL, USER, PASS);

     System.out.println("About to create a database");
      stmt = conn.createStatement();
      String dbName = "MyExcelDB";
      String sql = "CREATE DATABASE " + dbName;
      stmt.executeUpdate(sql);
      System.out.println("Database created successfully...");
      //Now, create a table based on what you need, maybe you can get the headers of your excel
String tableName = "TBUSER";
String createTableSQL = "CREATE TABLE" + tableName + "("
                + "USER_ID NUMBER(5) NOT NULL, "
                + "USERNAME VARCHAR(20) NOT NULL, "
                + "CREATED_BY VARCHAR(20) NOT NULL, "
                + "CREATED_DATE DATE NOT NULL, " + "PRIMARY KEY (USER_ID) "
                + ")";
Statement createTableStatement = conn.createStatement();
createTableStatement.execute(createTableSQL);
//Now insert
String insertQuery = "insert into " + dbName + "." + tableName + "(user_id,username,created_by,created_date) values (?,?,?,?)";
PreparedStatement insertStatement = conn.prepareStatement(insertQuery);
insertStatement.setInt(1,Integer.parseInt(sheetData.get(0));
insertStatement.setString(2,sheetData.get(1));
//and so on... then
insertStatement.executeUpdate();//This returns an int, if the insert works, the value must be greater than 0

コードには多くの改善点があることは承知していますが、それを行うためのアイデアと「テンプレート」を提供したいと思います。よろしくお願いします。

于 2013-04-03T13:28:01.787 に答える
0

単純なアプリケーションの場合、必要に応じて、JDBC を使用してオンザフライでデータベースを作成し、レコードを挿入できます。それ以外の場合は、事前にデータベースを作成し、Excel ファイルからデータを読み取るときに行を挿入します。

于 2013-04-03T13:09:04.207 に答える