0

すべてが完璧に機能しますが、データを CSV ファイルにエクスポートしているときに問題が発生しました。同様の問題を検索しようとしましたが、私の問題に関連する可能性のあるものはまったく見つかりませんでした。

このコードは、mySQL データベースからデータベース テーブル全体をエクスポートすることになっています。それは完全にそれを行いますが、問題は、すべてのデータを最初の列、つまり異なるセルに配置することです。セルの配置は問題ありませんが、データを複数の列 (私の場合は 13) に分散することになっています。

何が起こっているかを説明するスクリーンショットを次に示します。

ここに画像の説明を入力 コード:

<?php
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: filename=export.csv");

#$query=mysql_query("set names 'utf8'");
#mb_http_output('UTF-8');
#mb_http_input('UTF-8');
#mb_language('uni');
#mb_regex_encoding('UTF-8');
#ob_start('mb_output_handler');
#header('Content-type: text/html; charset=utf-8');

$conn = mysql_connect('localhost', 'root', 'asdasd') or die(mysql_error());
mysql_select_db('nooruse', $conn) or die(mysql_error($conn));

$query = sprintf('SELECT osakond as Osakond, soetusaasta as Soetusaasta, it_number as IT_Number, tooteruhm as Tooteruhm, mudeli_nimetus as Mudeli_nimetus, sn as SN, riigivara_nr as Riigivara_nr, inventaari_nr as Inventari_nr, maja as Maja, ruum as Ruum, vastutaja as Vastutaja, markus as Markus,kasutajanimi as Kasutajanimi FROM norse5_proov');
$result = mysql_query($query, $conn) or die(mysql_error($conn));

$row = mysql_fetch_assoc($result);
if ($row) {
    echocsv(array_keys($row));
}

while ($row) {
    echocsv($row);
    $row = mysql_fetch_assoc($result);
}

function echocsv($fields)
{   
    $separator = '';
    foreach ($fields as $field) {
        if (preg_match('/\\r|\\n|,|"/', $field)) {
            $field = '"' . str_replace('"', '""', $field) . '"';
        }
        echo $separator . $field;
        $separator = ',';
    }
    echo "\r\n";
}

前もって感謝します。

4

1 に答える 1

1

問題は、Excelがセミコロンが区切り文字であることを認識していると想定していることです。

一部のマシンではこれが機能する場合と機能しない場合があります。

これは、リストセパレータの下のコントロールパネルの地域設定に関係していることが示唆されました。

CSVの最初の行に次を追加して、使用する区切り文字をExcelに指示する提案を見つけました。

sep =;

これは試していませんが、合法のようです。

より適切な説明へのリンクは次のとおりです(クライアントコンピューターの変更を回避するためにCSVファイルに区切り文字を設定する方法については、下の3番目のコメントを参照してください)。

ExcelでCSVファイルを開くのに問題がありますか?ヨーロッパの地域設定によるExcelのコンマとセミコロンの問題

于 2013-03-19T09:18:44.400 に答える