![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Excelが出力したCSVファイルを扱うプログラムに関する質問です。
Windwosの[コントロールパネル]⇒[地域と言語のオプション]で、
小数点の記号を「.(ピリオド)」から「,(カンマ)」に変更しました。
するとExcelからCSVファイルを出力したときの各データの区切り文字が
「,(カンマ)」から「;(セミコロン)」に変わるようなのですが、
これに対応できるプログラムを作りたいと考えています。
CSVファイルの区切り文字は、Windowsのロケール情報として
プログラム上から取得可能なのでしょうか?
No.4ベストアンサー
- 回答日時:
API の getLocaleInfoは、あくまでも、WindowsのLocale 情報であって、CSVファイルは、出力時には、WindowsのLocaleに従っても、ファイル自体は独立した存在なのですから、デリミタが不安な時は、実際のテキストファイルを、Open [File] For Input As ~なでど一行目を読んで、それで決定するしかないのではないでしょうか?簡単なロジックで済むと思います。
「,」「;」混じりの時は、どちらにするか決定するダイアログをつけてもよいと思いますが。
ご回答ありがとうございます。
たしかにおっしゃるとおりですね。
ヘッダ行の区切り文字を読み取ることで、そのファイルで使用されている区切り文字を判別することはできそうです。
ですが今回のプログラムはExcelとの連携を想定しており、また仕様をできるだけ単純化しておきたいので判別処理は行わず、ロケール設定に基本的に従う形にしようかと思います。
No.5
- 回答日時:
#3の
LOCALE_SLIST &HC 区切り記号
ですが、EXCELの区切り文字とは関係ないようです。
すいません。
私も、#4さんの方法が良いかと思います。
";"区切りのファイルを作成するのはいいですが、
LOCALEの設定の違うPCで読むと読めませんし、
同一PCでも変更されてしまうと、正しく読めなくなり
ます。
同じことはDDEでも起こります。
日本のサーバーで開発・運用をし、各国でクライアント
をばら撒くと、EXCELにDDEでデータを送るとLOCALEの
設定に影響されます。
日付もLOCALEの設定に影響されます。
No.3
- 回答日時:
すいません。
#2は間違いです。http://www.galliver.co.jp/writing/msdn/msdn14/
に
LOCALE_SLIST &HC 区切り記号
がのっています。
TEST機の設定を変えるのを忘れていましたが、
コンパネで変更すると、CSVが;で区切られました。
ご回答ありがとうございます。
あれからこちらでもいろいろ試してみたのですが、基本的にExcelは区切り記号の設定に従うようですね。
ただ具体的な話をすると、スペイン語設定では小数点記号、区切り記号ともにカンマが設定されているとのことで、この設定にした場合、Excelは小数点記号をカンマ、区切り記号をセミコロンとしてCSVファイルを出力します。
おそらく小数点記号と区切り記号が同じ場合はロケール設定を無視し、区切り記号として別の文字使用する、というExcelの仕様なんですね(マイクロソフトに確認を取ったわけではないです)。
なのでプログラム上は、基本的にはロケール設定に従う形にしようかと思います。ただし小数点、区切り記号がともにカンマの場合はロケール設定には従わず、区切り記号をセミコロンとして例外的に処理する形を考えています(このロジックで処理できないロケール設定があるようならその時また考えます)。
No.2
- 回答日時:
>CSVファイルの区切り文字の設定は取得できないように思います
私もそう思います。
小数点の記号を取得して、「,(カンマ)」なら「;(セミコロン)」
というようにロジックを組んではいかがでしょう?
開発元ではないので、確かなことはいえませんが、
「,(カンマ)」なら「;(セミコロン)」というのは
EXCEL固有の機能だと思います。
CSVについて
http://hp.vector.co.jp/authors/VA019702/csharp/c …
CSVの規格はあるのか分かりませんが、MSも基本的には
「,(カンマ)」があれば「”(ダブルクオテーション)」
で囲むと記述しています。
ちなみにtest.csvでファイルを作成してメモ帳で
abc;111;123456,456;aaa;05/05/05
ccccc;000;0,123456789;a0a;01:01:01
を貼り付けてみてください。
ダブルクリックをすると、「,(カンマ)」で区切られます。
「;(セミコロン)」で区切るには、textの読み込みで
手で操作するなどする必要がありそうです。
このあたりからも、OSの範疇でないと考えられます。
No.1
- 回答日時:
.NETなら
http://www.microsoft.com/japan/msdn/library/defa …
APIなら
http://www.galliver.co.jp/writing/msdn/msdn14/
が参考になるかと。
この回答への補足
早速のご回答ありがとうございます。
お教えいただいた方法ですが、
NumberFormatInfoクラスでも、GetLocaleInfo()APIでもCSVファイルの区切り文字の設定は取得できないように思います(質問に書き忘れてましたが、GetLocaleInfo()は事前に調査済みでした)。
ひょっとしてWindowsのロケール設定には存在せず、ExcelのCSV出力仕様として「小数点記号がカンマのときはセミコロン区切り」と言うものが存在するということなのでしょうか…?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- システム メールのcsv添付ファイルの種類を テキスト形式からカンマ区切り形式に 変更する方法はありますか? 4 2023/03/09 20:33
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Outlook(アウトルック) 【 Windows 10 】アドレス帳に正しくインポートを完了させたい。 3 2023/04/23 13:41
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Excel(エクセル) Excelについて。 Excelからcsv変換したいのですが、 やり方はファイル→名前をつけて保存→ 7 2022/07/27 01:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
WORDで改ページすると時々グレ...
-
CSVの定義
-
PHP カンマをエスケープしたい...
-
カンマ区切りの数字をCSVフ...
-
[VBA][Excel]クリップボードか...
-
エクセルで電話番号を取り出す...
-
数字が全角、コンマなし
-
VB2005のTextBoxでカン...
-
ExcelのCSVファイル出力について
-
データにカンマが入ったCSVデー...
-
テキストファイルからReadLine...
-
なぜ「◯◯年代に」という時は th...
-
エクセルにペーストする際にカ...
-
メモ帳からエクセルにセル区切...
-
エクセル:桁区切り「カンマ」...
-
TextBoxに文字が正しく配置され...
-
カンマ区切り
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
マクロを使ってフォルダー内に...
-
カンマ区切りの数字をCSVフ...
-
データにカンマが入ったCSVデー...
-
カンマ区切り
-
WORDで改ページすると時々グレ...
-
CSVの定義
-
C#で、テキストボックスの入力...
-
3桁ごと?4桁ごと?コンマの...
-
[VBA][Excel]クリップボードか...
-
何故、日本は未だに数字を3桁...
-
PHP カンマをエスケープしたい...
-
ひとつの命令を複数行に記述
-
「カンマ」と「コンマ」は同じ...
-
VB2005のTextBoxでカン...
-
JPY ¥1,500.00は日本円でお幾ら?
-
パス区切りの文字について
-
メッセージボックスの数字をカ...
おすすめ情報