csv経由で一括とかではなく、エクセルの内容をDBなどに入れたい場合、
エクセルの内容を入力フォームにペーストすると、
セルごとにtabで区切られたテキストが表示される。
これをそのままフォームへpostしたと仮定して、受け側のプログラム。
条件として、
○コピペする列の数は決まっている
○最後の列に改行記号が入っていない
とします。
$contents = $_POST["contents"];//これがフォームの内容
$celllength = 10;//一行あたりのセルの数を決めておく
$masterarray =[];//目標となる配列。ここに全て入れたい。
$count =0;
$array = explode("\t", $contents);//とりあえず全てtabで区切る
foreach ($array as $key => $value) {
if($count % ($celllength-1) ==0 &&$count>0)//最後の列は次の行の最初の列とくっついているので、改行記号で分ける。
{
$masterarray[]=explode("\n",$value)[0];
$masterarray[]=explode("\n",$value)[1];
}
else {
$masterarray[]=$value;
}
$count++;
}
if(count($masterarray) > $celllength)
{
array_pop($masterarray);//最後の行の最後の列を二つにしてしまったので、削除しておく
}
if(count($masterarray) % $celllength !=0 )//postされたセルの数が正しいか確認
{
echo "error:セルの数が不正です。エクセルの選択範囲を見直してください。";
die;
}
foreach ($masterarray as $key => $value) {
echo $key.":".$value."\r";//debug
}
後はお好きに。$masterarrayは連想配列にしてあげたほうが使いやすいですね。
0 件のコメント:
コメントを投稿