0

私はファイルをExcelファイルにするプログラムを持っています、そして私はそれを持っているのでそれはダムフォーマットのmcExcelを取り除きますが########を取り除きません

その形式はmcExcelで発生し、セルに記号が含まれているように見えます。しかし、それらのすべてがそのようなわけではありません。

クリーンアップのコードは次のとおりです。

function cleanData(&$str)
  {
   // escape tab characters
    $str = preg_replace("/\t/", "\\t", $str);

    // escape new lines
    $str = preg_replace("/\r?\n/", "\\n", $str);

    // convert 't' and 'f' to boolean values
    if($str == 't') $str = 'TRUE';
    if($str == 'f') $str = 'FALSE';

    // force certain number/date formats to be imported as strings
    if(preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) {
      $str = "'$str";
    }

    // escape fields that include double quotes
    if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';

  }

他に何か必要な場合はお知らせください。

ありがとうございました。

4

1 に答える 1

1

その「########」は、セルの内容がデフォルトの列サイズに対して大きすぎる場合に MS Excel が表示するものです。テキスト内の記号とは関係ありません。セルの値はまだ正しいですが、タブ区切り値ファイルを使用する場合は列幅を設定できないため、実際の Excel ファイルに切り替えない限り、これを制御することはできません。

タブ区切り値ファイルを使用する必要がある場合。タブ区切り値への独自の変換を記述する代わりに、代わりに PHP の組み込みfputcsv()関数を使用してみませんか?

于 2012-09-05T06:27:48.123 に答える