0

Excelからmysqlテーブルにデータを読み取るためにapache poiを使用しています。そして、2つのフィールドを持つExcelシートでそれを行いました。私のコードは、

try
        {
            fis = new FileInputStream(filePath);


        //creating workbook, sheet(from poi jar file)
        HSSFWorkbook workBook = new HSSFWorkbook(fis);
        HSSFSheet sheet = workBook.getSheetAt(0);
        //Iterator for iterating rows in sheet
        Iterator itr = sheet.iterator();
        while(itr.hasNext())
        {

            HSSFRow row = (HSSFRow) itr.next();
            Iterator cell = row.cellIterator();
            List data = new ArrayList();
            while(cell.hasNext())
            {
                HSSFCell value = (HSSFCell) cell.next();                    
                if (value.getCellType() == Cell.CELL_TYPE_NUMERIC) 
                {
                    data.add(value.getNumericCellValue());
                }
                else if (value.getCellType() == Cell.CELL_TYPE_BOOLEAN) 
                {
                    data.add(value.getBooleanCellValue());
                }
                else if (value.getCellType() == Cell.CELL_TYPE_STRING)
                {
                    data.add(value.getStringCellValue());
                }
            }
            sheetData.add(data);

        }
    }
    catch (Exception e) {
        // TODO: handle exception
    }

そして、配列リストにデータを置きます。Tenはそれをデータベースに挿入しました..しかし、今、私は、変数番号の付いたExcelファイルを取得するシステムが必要です。私はそれを達成できますか?ひどく助けが必要です。ですから、いくつかのアイデアと、おそらくいくつかのコードで私を助けてください。

前もって感謝します。スジット

4

3 に答える 3

0

Excel シートの最初の行を使用して mysql テーブルの列名を保存できるため、列インデックス - 列名のマッピング情報が得られます。

次に、mysqlテーブルに挿入するときに、最初の行の列名を選択して操作できます。例えば

エクセル1

   =========================
   | A      | B      | C
===+========+========+======
1  | name   | gender | age   <-- column name row
---+--------+--------+------
2  | josh   | male   | 28
---+--------+--------+------
3  | linda  | female | 22
----------------------------

SQL 1

INSERT INTO table (name, gender, age) VALUES ('josh', 'male', 28),('linda', 'female', 22)

エクセル2

   ==================
   | A      | B 
===+========+========
1  | name   | country <-- column name row
---+--------+--------
2  | 张三   | China
---+--------+--------
3  | emily  | USA
---------------------

SQL 2

INSERT INTO table (name, country) VALUES ('张三', 'China'),('emily', 'USA')
于 2012-06-12T14:28:40.627 に答える
0

単一の行を反復する場合

if (value.getCellType() == Cell.CELL_TYPE_NUMERIC){
                     data.add(value.getNumericCellValue());                 
}

チェックする新しいifブロックを追加できます

if(value.getCellType() == Cell.CELL_TYPE_BLANK){
break;
}

ここでは、列内のすべてのデータが同時 (1 2 3 4 空白) であり、このようではないと仮定しています (1 空白 2 3 4 5)。したがって、空白の型を取得すると、イテレータは次の行にシフトします。

お役に立てれば。

于 2012-06-12T11:59:36.717 に答える