if (trim($_POST["cmd"])=="アップロード")
{
$err_corr = "サポートされていない形式またはファイルが破損しています";
$excel_file_size;
$excel_file = $_FILES['excel_file'];
$uploadservername=$UploadAbsPath."tmpexcel/".$_FILES['excel_file']['name'];
echo($uploadservername);
if (!is_writeable($UploadAbsPath."tmpexcel/"))
{
echo "目录不可写!";出口;
}
else
{
echo "目录可写!";
}
if (move_uploaded_file($_FILES['excel_file']['tmp_name'], $uploadservername))
{
echo("上传成功");
}
else
{
echo("上传失败");
}
$excel_file=$アップロードサーバー名;
//if( $excel_file )
// $excel_file = $_FILES['excel_file']['tmp_name'];
if( $excel_file == '' ) Fatal("ファイルがアップロードされていません");
$exc = new ExcelFileParser("debug.log", ABC_NO_LOG);//ABC_NO_LOG ABC_VAR_DUMP);
//echo($excel_file."|");
$style = $_POST['スタイル'];
if( $style == 'old' )
{
$fh = @fopen ($excel_file,'rb');
if( !$fh ) Fatal("ファイルがアップロードされていません");
if( filesize($excel_file)==0 ) Fatal("ファイルがアップロードされていません");
$fc = fread( $fh, ファイルサイズ($excel_file) );
@fclose($fh);
if( strlen($fc) < filesize($excel_file) )
fatal("ファイルを読み取れません");
$time_start = getmicrotime();
$res = $exc->ParseFromString($fc);
$time_end = getmicrotime();
}
elseif( $style == 'セグメント' )
{
$time_start = getmicrotime();
$res = $exc->ParseFromFile($excel_file);
$time_end = getmicrotime();
}
switch ($res) {
case 0: ブレーク;
ケース 1: 致命的(「ファイルを開けません」);
ケース 2: Fatal("ファイルが小さすぎて Excel ファイルになりません");
ケース 3: 致命的("ファイル ヘッダーの読み取りエラー");
ケース 4: 致命的("ファイル読み取りエラー");
ケース 5: Fatal("これは Excel ファイルではありません、または Excel 5.0 未満に保存されたファイルではありません");
ケース 6: 致命的(「ファイルが破損しています」);
ケース 7: 致命的("ファイル内に Excel データが見つかりません");
ケース 8: 致命的("サポートされていないファイル バージョン");
デフォルト:
fatal("不明なエラー");
}
/*
print '
'; <br>print_r( $exc ); <br>print '
';
終了;
*/
show_time();
エコー <<
凡例:
<フォーム名='doform' アクション='' メソッド='ポスト'>
<入力タイプ='非表示' 名前='excel_file' 値=$excel_file>
データ型 | 説明 |
| 空のセル |
ABCabc | String |
12345 | 整数 |
123.45 | Float |
123.45 | 日付 |
<テーブル>
脚;
/*
print ""; <br>print_r ($exc->ワークシート); <br>print_r($exc->sst); <br>print "
";
*/
for( $ws_num=0; $ws_numworksheet['name']); $ws_num++ )
{
print "Worksheet: "";
if( $ exc->worksheet['unicode'][$ws_num] ) {
print uc2html($exc->worksheet['name'][$ws_num]);else
print $exc->worksheet['name'][$ws_num];
print """;
$ws = $exc->worksheet['data'][$ws_num] ;
if( is_array($ws) &&
isset($ws['max_row']) && isset($ws['max_col']) ) {
echo "n
<表の境界線=1 セルスペース=0 セルパディング=2>n";
print " | n";
for( $j=0; $j<=$ws['max_col' ]; $j++ ) {
print " "; if( $j>25 ) print chr((int)($j/26)+64);データを表示するリスト //循環データであることに注意してください echo("n"); print " | "
}
for ( $j=0 ; $jprint " "; if($j>25 ) print chr((int)($ j/26) 64); print chr(($j % 26) + 65)." 列名 | "
}
//ヘッダー出力完了
if ($ws['max_row ']>9)
{
$shownum=9;
}
else
{
$shownum=$ws['max_row'];//最初の 10 個のデータのみを出力します
}
for( $i=0; $i<= $shownum; $i++ ) {
print "
".($i+1)." | n"; ][$i]) && is_array($ws['cell'][$i]) ) {
for( $j=0; $j<=$ws['max_col']; $j++ ) {
if ( ( is_array($ws['cell'][$i]) ) &&
( isset($ws['cell'][$i][$j]) )
){
// セルデータを出力
print "$data = $ws['cell'][$i][$j];
$font = $ws['cell'][$i] [$j] ['font']; $style = " style ='".ExcelFont::ExcelToCSS($exc->fonts[$font])."'";
switch ($data['type ']) { // string case 0: print "dt_string"".$style.">"; $ind = $data['data']; if( $exc->sst[' unicode'][ $ind] ) { $s = uc2html($exc->sst['data'][$ind]); } else $s = $exc->sst['data'] [$ind] ; if( strlen(trim($s))==0 ) print " "; else print $s; // 整数 case 1: print "dt_int"" .$style "> "; print $data['data']; // 浮動小数点数 case 2: print "dt_float"".$style."> echo $data ['data' ]; break; // 日付 case 3: print "dt_date"".$style."> ";
$ret = $data[data];//str_replace ( " 00:00:00" , "", gmdate("d-m-Y H:i:s",$exc->xls2tstamp($data[data])) ); echo ( $ret ) ); default: print "dt_unknown"" .$style."> "; break; print " | n";
print "n" ; }
} else {
// 空の行を出力します
for( $j=0; $j<=$ws['max_col']; $j++ )
print " < ;/td> "; print "n"; } print " |
n";
}
echo "
n";
} else {
// 空のワークシート
print " - 空
n";
}
print "
";
}
echo("");
echo("");
/* print "フォーマット
";
foreach($exc->format as $value) {
printf( "( %x )",array_search($value,$exc->format));
print htmlentities($value,ENT_QUOTES);
print "
"
print " Xfs & lt; br & gt; ";
For ($ i = 0; $ i & lt; count ($ exc- & gt; xf ['format']);
printf (" フォーマット (%x) フォント (%x)" ,$exc->xf['format'][$i],$exc->xf['font'][$i]);
print "
"
*/
操作の結果は次のとおりです:
2番目のステップはデータを読み取ることです。コードは次のとおりです:
コードをコピーします コードは次のとおりです:
if ($_POST[" action"]=="do")
{
//データの処理
//最初にヘッダーレコードを読み取ります
$excel_file=$_POST["excel_file"];
$fh = @fopen ($excel_file,'rb') ;
$fc = fread( $ fh, filesize($excel_file) );
//echo("execute".$excel_file); , ABC_NO_LOG);//ABC_NO_LOG ABC_VAR_DUMP );
//echo($excel_file."|");
$style = $_POST['style']
if( $style == 'old' ); fh = @fopen ($excel_file, 'rb');
if( !$fh ) Fatal("ファイルがアップロードされていません")
if( filesize($excel_file)==0 ) Fatal("ファイルがアップロードされていません");
$fc = fread( $fh , filesize($excel_file) );
@fclose($fh);
if( strlen($fc) < filesize($excel_file) )
fatal("ファイルを読み取れません");
$time_start = getmicrotime();
$res = $exc->ParseFromString($fc);
$time_end = getmicrotime();
}
elseif( $style == 'segment' )
$time_start = getmicrotime();
$res = $exc->ParseFromFile($excel_file);
$time_end = getmicrotime();
ケース 0: ブレーク;ファイルを開けません");
ケース 2: 致命的("Excel ファイルとしては小さすぎるファイル");
ケース 3: 致命的("ファイル ヘッダーの読み取りエラー");
ケース 4: 致命的("ファイルの読み取りエラー");
ケース 5: 致命的 ("これは Excel ファイルまたは Excel 5.0 未満に保存されたファイルではありません");
ケース 6: 致命的("ファイルが破損しています");
ケース 7: 致命的("Excel データが見つかりませんin file");
case 8 : Fatal("Unsupported file version");
default:
fatal("Unknown error");
}
//読み取りが完了した後、エラーがなければループできますMSSQL にデータを追加するには
for( $ws_num=0; $ws_num
worksheet['name']); $ws_num++ )
{
// print "Worksheet: "" ;
// if( $exc- >worksheet['unicode'][$ws_num] ) {
// print uc2html($exc->worksheet['name'][$ws_num]); else
// print $exc->worksheet['name'][$ws_num];
//
// print """;
$ws = $exc->worksheet['data '][$ws_num];
/ /
//
// print " n"; 0;
$ftxdznum=0;
$fkhahnum=0;
$j=0; ]; $j++ ) {
// print " "; //if( $j>25 ) print chr((int)($j/26)+64);最初に列名
$tmpcolum=trim($_POST["$j"]); //echo($tmpcolum."|"); if ($tmpcolum=="fkhxm") $fkhxmnum=$j ; if ($tmpcolum=="fsfzh") $fsfzhnum=$j; if ($tmpcolum=="fyddh") $fyddhnum=$j; j; if ($tmpcolum== "femail") $femailnum=$j; if ($tmpcolum=="fkhah") $fkhahnum= $j; if ($tmpcolum= ="fbzxx") $fbzxxnum=$j; } for( $i=0; $i//$ fkhxm= //echo($fkhxmnum .$fsfzhnum.$fyddhnum.$ftxdznum.$femailnum.$flxdhnum.$fkhahnum.$fbzxxnum); //print " |
". ($i+1)."n"; if(isset($ws['cell'][$i]) && is_array($ws['cell'][$i]) ) { if ($fkhxmnum!=0&&$ ftxdznum!=0&&($fyddhnum!=0||$flxdhnum!=0))//ここに空でない必須フィールドを指定してください { $sql="k_qlkhxx に挿入( fkhxm,fsfzh,fyddh,ftxdz ,femail,flxdh,$fkhah,fbzxx,fglry,fglryxm,fdjry,ffzdm)values('".uc2html($exc->sst['data'][$ws['cell' ][$i][$ fkhxmnum]['data']])."','".$exc->sst['data'][$ws['cell'][$i][$fsfzhnum] ['data']]. "','".$exc->sst['data'][$ws['cell'][$i][$fyddhnum]['data']].", '".uc2html($exc ->sst['data'][$ws['cell'][$i][$ftxdznum]['data']])."','".uc2html($exc ->sst['data '][$ws['cell'][$i][$femailnum]['data']])."','".$exc->sst['data'] [$ws['cell' ][$i][$flxdhnum]['data']]."','".uc2html($exc->sst['data'][$ws['cell'] [$i][$fkhahnum ]['data']])."','".uc2html($exc->sst['data'][$ws['cell'][$i][$fbzxxnum] ]['data']] )."','".$_SESSION["uyhmc"]."','".$_SESSION["uyhxm"]."','".$_SESSION["uyhmc"] ."','".$_SESSION["ubm"]."')"; echo($sql." "); } } } //インポート後にファイルを削除 unlink($filename)
; 実行行をコメントアウトしていることに気づきましたか?コメントを削除すれば正しく実行できます。 使用したコードは http://xiazai.jb51.net/201002/yuanma からダウンロードできます。 /php_excel_mysql.rar
http://www.bkjia.com/PHPjc/321150.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/321150.html技術記事まずアイデアを明確にしましょう。~~ まず、ファイルをサーバーにアップロードする必要があります。次に、Excel データ列を読み取って表示し、次に、ユーザーにフィールドの対応関係を選択させ、次に、データを送信します。 、文字を読んでください...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31
|