結論
CSVはExcel(エクセル)以外でも読めますが、文字として見ることと、正しい列に分けることは別です。 今回のPowerShellの測定では、先頭の0を保って読めた一方、区切り文字を間違えると3列が1列になり、読込結果から値の一部も落ちました。
文章比較元のCSVと変更後の文字を見比べる見本登録なしで使えます開く
元ファイルが無事でも、読み込んだ表が正しいとは限りません。 この記事では架空CSV3ファイルをローカルで読み、元ファイルを上書きせずに、列数・行数・文字列の保持を確認した例を示します。
元の文字を見る場合と、表として読む場合を分ける
CSVの先頭行を列名、後続をデータとして読む方法の一つがPowerShellのImport-Csvです。 Microsoftの説明は、列がどのように扱われるかを一次資料の節に引用したとおり示しています。
CSVの各列が、読み込んだオブジェクトの項目になるという説明です。今回の列名はid・name・noteです。idの00123は数値の123に直さず、文字列として確認しました。
以下は、UTF-8・カンマ区切り・先頭行に列名があるsample.csvを読む例です。実測に用いたPowerShellは7.6.5でした。
powershell
$csvRows = @(Import-Csv -LiteralPath '.\sample.csv' -Encoding utf8)
$csvRows | Format-List
$csvRows.Count
この例は読み込みと表示で、元CSVへの保存処理を含みません。 パスは作例です。利用できるPowerShellの版や社内PCの実行権限は環境ごとに異なり、インストールや制限の回避を試した例ではありません。
区切り文字と引用符内の改行を見落とさない
カンマが含まれる項目と、列を区切るカンマは同じ役割ではありません。 RFC 4180は、改行・二重引用符・カンマを含む項目を二重引用符で囲む形を説明しています。原文は一次資料の節にまとめています。
たとえばカンマ区切りの中の"1,200円"は、引用符で囲まれた1項目です。また、引用符内に改行があると、テキストで見える行数とデータ件数が違います。 改行ごとに単純分割するだけでは、1件を途中で切ってしまいます。
セミコロンで区切られたファイルには、同じ条件の例なら次の指定を使います。
powershell
$csvRows = @(Import-Csv -LiteralPath '.\sample.csv' -Encoding utf8 -Delimiter ';')
$csvRows | Format-List
拡張子.csvだけで、区切り文字や文字コードは確定しません。 受け取ったデータの仕様と、元の文字列の両方を照合する必要が残ります。
3ファイル・4読込条件で列数と先頭の0を照合した
n=3ファイルを2026年10月1日に測定しました。各ファイルの論理上のデータは2件・3列で、idは00123と00456です。日本語と、項目内のカンマまたは改行を含む架空の内容にしました。
| ファイル | 読み込み時の区切り | テキストの行数(見出し込み) | 読込件数 | 列数 | 結果 |
|---|---|---|---|---|---|
| カンマ区切り | カンマ | 3 | 2 | 3 | 値を保持 |
| セミコロン区切り | カンマのまま | 3 | 2 | 1 | 不一致 |
| 同じセミコロン区切り | セミコロン | 3 | 2 | 3 | 値を保持 |
| 項目内に改行あり | カンマ | 4 | 2 | 3 | 改行を含め保持 |
区切りを合わせた3条件は、全項目が文字列で、00123・00456の先頭0も残りました。 Pythonのcsv.DictReaderでも同じファイルを別に読み、2件×3列の値がそれぞれ一致しました。
Pythonの標準的なCSV読込についても、公式説明は、各行を文字列のリストとして返すとしています。原文は一次資料の節にまとめています。
この公式説明は基本のreaderについてのもので、今回の独立照合は、列名を付けて扱うDictReaderを使用しました。数値型への変換などを後から追加すれば、同じ保持結果になるとは限りません。
間違った区切りの条件では、列名全体がid;name;noteという1項目になりました。最初の値も00123;田中;1となり、元の1,200円を保持できません。エラーなく件数2が出たことだけでは、正しく開けたと判断できない結果です。元ファイルのハッシュは全条件で実行前後に一致しました。
一次資料
本文で参照した一次資料の引用と出典をまとめます。
“Each column in the CSV file becomes a property of the custom object”
— Microsoft Learn「Import-Csv」、Description https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/import-csv?view=powershell-7.6(2026-10-01 到達)
“Fields containing line breaks (CRLF), double quotes, and commas should be enclosed in double-quotes.”
— RFC 4180、Section 2、項目6 https://www.rfc-editor.org/rfc/rfc4180.html(2026-10-01 到達)
“Each row read from the csv file is returned as a list of strings.”
— Python「csv — CSV File Reading and Writing」、csv.reader https://docs.python.org/3/library/csv.html(2026-10-01 到達)
測っていないこと・ここから先は推論
Excel、Googleスプレッドシート、スマートフォンで開いた結果は測っていません。 Shift_JISや巨大ファイル、欠けた引用符、不正な列名等も対象外です。今回は3個のUTF-8作例だけで、任意のCSVの正しさや社内での利用許可を保証するものではありません。
次の1手
元の文字、文字コード、区切り、列数、論理上の件数、先頭0を別々に見ると、読み込みの不一致を見つけやすくなります。文章比較は文字の差を見る見本で、CSVの構造や数値型を自動判定する機能ではありません。