2

Javaアプレットのアンケートに含める50の質問があるExcelファイルがあります。このアンケートの回答は、私が作成したMySQLデータベースに保存されます。

Excelファイルからすべて(またはサブセット)の質問を選択して、MySQLテーブルの(選択した)フィールドに配置する方法はありますか?

私は周りを見回してデータをロードするファイルは機能するオプションのように聞こえますが、どの質問とそれらを配置するかを選択したいと思います。誰かが私を正しい方向に向けることができますか?または、単にコピーして貼り付ける必要がありますか?

どんな助けでも素晴らしいでしょう!

4

5 に答える 5

4

ExcelデータをCSV形式で保存し、コマンドを使用してMySQLにインポートしますLOAD DATA

後者に関する情報は、例えば、ここで見つけることができます:

于 2012-05-10T09:57:30.603 に答える
0

データをCSVファイルとして保存してからMySQLにロードするExcelを調べてください。MySQLの構造に従って、Excelでデータをフォーマットしてみてください。

于 2012-05-10T09:55:07.020 に答える
0

これは今では少し古いように見えるかもしれませんが、解決策を探している他の人を助けるでしょう。

ExcelでMySQLデータをエクスポート、インポート、追加、編集するための公式のMySQLプラグインがあります。

リンクは次のとおりです:http://dev.mysql.com/doc/refman/5.6/en/mysql-for-excel.html

于 2014-05-27T19:32:34.423 に答える
0
# wanna be generic implementation of xls to mysql upsert in perl
# by this time you should have your mysql connection open ... 
use Spreadsheet::XLSX;
use Text::Iconv;



#
# -----------------------------------------------------------------------------
# runs the insert sql by passed data part 
# by convention is assumed that the first column is unique and update could 
# be performed on it ... should there be duplicates the update should fail
# -----------------------------------------------------------------------------
sub RunUpsertSql {

   my $self             = shift ; 
   my $table_name   = shift ; 
   my $refHeaders   = shift ; 
   my $refData      = shift ; 
   my $data_str         = '' ; 
   my @headers      = @$refHeaders ; 
   my @data             = @$refData ; 

   print ( "\@data : @data" ) ; 
   print ( "\@headers: @headers" ) ; 

   my $sql_str = " INSERT INTO $table_name " ; 
   $sql_str .= '(' ; 
   for ( $i=0; $i<scalar (@headers);$i++ ) {
      $sql_str .= " $headers[$i] " . ' , ' ; 

   } #eof for

   for (1..3) { chop ( $sql_str) } ; 
   $sql_str .= ')' ; 

   foreach my $cellValue ( @data ) {
      # replace the ' chars with \'
      $cellValue        =~ s|\'|\\\'|g ; 
      $data_str .= "'" . "$cellValue" . "' , " ; 
   }
   #eof foreach ' replacement

   # remove the " , " at the end 
   for (1..3) { chop ( $data_str ) } ; 

   $sql_str .=  " VALUES (" . "$data_str" . ')' ; 
   $sql_str .= ' ON DUPLICATE KEY UPDATE ' ; 

   for ( $i=0; $i<scalar(@headers);$i++ ) {
      $sql_str .= "$headers[$i]" . ' = ' . "'" . "$data[$i]" . "' , " ; 
   } #eof for

   for (1..3) { chop ( $sql_str) } ; 

   print ( "sql_str : $sql_str " ); 

   $sth = $dbh->prepare($sql_str ) ; 
   $sth->execute( );

}
#eof sub RunUpsertSql


#
# -----------------------------------------------------------------------------
# walk trough the Excel and build the data part of the insert sql
# -----------------------------------------------------------------------------
sub ParseExcel {

   my $self = shift ; 
   print (  " == START == " ) ; 
   # not sure if it could work without the next line
   # for utf8 strings - slavic , japanese etc. 
   my $converter = Text::Iconv -> new ("utf-8", "utf-8");

   # http://search.cpan.org/~dmow/Spreadsheet-XLSX-0.13-withoutworldwriteables/lib/Spreadsheet/XLSX.pm
   my $objExcelParser = Spreadsheet::XLSX -> new ("$FileInputExcel", $converter);

   # iterate the sheets
   foreach my $objSheet (@{$objExcelParser-> {Worksheet}}) {

      print("Sheet: " . $objSheet->{'Name'});

      my $rowCount = 0 ; 
      # iterate the rows 
      my @headerData                    = ();
      foreach my $row ($objSheet -> {'MinRow'} .. $objSheet -> {'MaxRow'}) {
         my @rowData                    = (); 
         $objSheet -> {'MaxCol'} ||= $objSheet -> {'MinCol'};

         # iterate the coloumns
         foreach my $col ($objSheet -> {'MinCol'} ..  $objSheet -> {'MaxCol'}) {
            my $cell = $objSheet -> {'Cells'} [$row] [$col];
            if ($cell) {
               #debug printf("( %s , %s ) => %s\n", $row, $col, $cell -> {'Val'});
               # the unformatted value
               #my $cellValue = $cell->{'Val'}  ; 
               # push the formatted value
               push ( @rowData , $cell->value() )       if $rowCount != 0 ; 
               push ( @headerData , $cell->value() )    if $rowCount == 0 ; 

            }  #eof if the cell is defined
         } 
         #eof foreach col
      # by convention the name of the xls sheet is the same as the table name
      $self->RunUpsertSql ( $objSheet->{'Name'} , \@headerData , \@rowData) 
         if $rowCount != 0 ; 

         $rowCount++ ; 
      }
      #eof foreach row

   } 
   #eof foreach $objSheet

   print (  " == STOP  == " ) ; 

} #eof sub ParseExcel
于 2014-06-20T20:50:00.867 に答える
0

私にとって最も簡単な方法は、MS Access(直接実行可能:[ファイル]->[開く]->...)とMySQLへのODBCエクスポートデータ(テーブルを右クリック->[エクスポート]->[ODBCデータベース])でExcelファイルを開くことでした。

ちなみに、「MySQLforExcel」で1つのバグを実験しました。出力には999行しかありません。理論的には、次の1.3.4バージョンで解決される予定です。

于 2015-02-12T08:33:09.550 に答える