CSVを解析するコードを投稿せよ
■ このスレッドは過去ログ倉庫に格納されています
0001仕様書無しさん
NGNGCSVはExeclで読み込めるものとする。
C言語限定。
0003仕様書無しさん
NGNGほら、最終レポートの季節だからさ。
0004仕様書無しさん
NGNG>>2
作ったよ。
でももっともっと良いコードがみたい。
プログラミング作法で取り上げられていたもの以上のものを。
0005仕様書無しさん
NGNGそれでレポートが「CSVのサンプルを改良せよ」じゃないのか?
ありがちだな。で、あげんな。
0007仕様書無しさん
NGNG0008仕様書無しさん
NGNGほらよ。
char *csv = "abc,def,ghi";
for(f = strtok(csv, ","); f != NULL; f = strtok(NULL, ",")) {
printf("%s\n", f);
}
0009仕様書無しさん
NGNGdo until eof(1)
input #1, a, b, c, e, f, g
loop
close #1
0010なんとなく。
NGNG盛り上がりそうで、何よりです。
0011仕様書無しさん
NGNGDim tso As Scripting.TextStream
Dim fields() As String
Dim i As Long
Set fso = New Scripting.FileSystemObject
Set tso = fso.OpenTextFile("FOO.CSV")
Do Until tso.AtEndOfStream
fields = Split(tso.ReadLine, ",")
For i = LBound(fields) To UBound(fields) Step 1
' なんかすれ
Next
Erase fields
Loop
tso.Close
Set fso = Nothing
Set tso = Nothing
0012仕様書無しさん
NGNG先生!質問です。
このperlのようなJavaのような言語がVBなんですか?
0014仕様書無しさん
NGNG0015仕様書無しさん
NGNGmno
0017仕様書無しさん
NGNGcsvファイルを開かせてセルごとに読み取ればいいでしょ。
0018仕様書無しさん
NGNG12さんよ どのへんがPerlっぽいか教えてください
001912
NGNGsplit関数です!
それから変数の型もみんなDimだけかと思ったのであります!
このスレは「1を小馬鹿にするスレ」から「12をいぢめるスレ」に
変わったようです。
先生!もう寝ます!
0020null
NGNG0021仕様書無しさん
NGNGhttp://linux.nikkeibp.co.jp/re-command/text_12.html
0022仕様書無しさん
NGNGBEGIN {
FS=",";
printf("awk使えやゴルァ!\n");
}
{
for (i = 1; i <= NF; i++)
{
printf("%s\n", $i);
}
}
END {
printf("あとは好きにしろ!\n");
}
0023仕様書無しさん
NGNGセル内改行はあり か?
セル内に「,」はあり か?
セル内に「"」はあり か?
0024仕様書無しさん
NGNGvar
i : Integer;
slCSV : TStringList;
slComma: TStringList;
begin
slCSV :=TStringList.Create;
slComma:=TStringList.Create;
try
slCSV.LoadFromFile(aFileName);
for i:=0 to slCSV.Count-1 do
begin
slComma.Clear;
slComma.CommaText:=slCSV[i];
// なんかすれ
end;
finally
slComma.Free;
slCSV.Free;
end;
end;
0025仕様書無しさん
NGNGたちまち難易度があがりません?(ExecelCSV)
コードは書けるけどやっぱりスマートじゃないね。
0026仕様書無しさん
NGNG0027仕様書無しさん
NGNGExcelならセル内に改行があるCSVも読めるよ!
0028仕様書無しさん
NGNG知らなかった。
ダブルコーテーションでくくれば、改行があってもOKってこと?
0029仕様書無しさん
NGNGダブルコーテーションでセルくくるのは
セル内に
・カンマがある場合
・ダブルコーテーションがある場合
(セル内のダブルコーテーションは続けて2回書く)
だ。
改行は括らなくてもよい。
0030仕様書無しさん
NGNG以上の事を考慮したらコードを書くのはそれなりのスキルが必要。
ガリガリ書けばどうにかなるが奇麗には書けん。<俺
0031仕様書無しさん
NGNG改行がある場合は、行の終わりはどう表現されてるの?
0032仕様書無しさん
NGNGDelphiのCommaTextって
スペースや、TABも区切りとして認識するから
使えないよう。
あと、誰も言及しないからオレの使い方がダメなのかも
しれないけど、最後のフィールドがNullだと
そのフィールドを認識しないから、ダメダメよ。
0033仕様書無しさん
NGNGやっぱり改行で表現。
つーか、本来、CSVファイルって、改行で1レコードと
するわけだから、Excelや、FileMakerの改行のあるフィールド
ってのが方言と思ってしまう自分の融通のなさに
ちょっと自己嫌悪。
0034仕様書無しさん
NGNG前自分で読み込みルーチン作った時は、ひたすらクサそうなデータをExcelに
出力させて調べたんだけど、鬱になった。
0035仕様書無しさん
NGNGCSVフォーマットの明示的な仕様ははっきり言ってない。
メーカーごとに違う。
いまはMSのCSVフォーマットが主流かな。
でも腐った仕様だな。プログラムで扱いにくい。
セル内のカンマは¥でエスケープする仕様ならスマートなのに・・・
なんで広まったんだろう。MSの力か?
0036仕様書無しさん
NGNGCSVを読み書きしたい状況ってのは、やっぱExcelとのデータ交換が目的
の場合が多いからねえ。
「\」でのエスケープは、DOSのパス区切りとカチ合うから採用しなかったんじゃ
ないかと想像してみる。
003733
NGNGエクセルの普及なんだろうねぇ。
ただ、もともとはレコードをテキストで表現するのが発端だから
文字列区切りとしての"を利用するのであればそのフィールド
全部を"で括るのが正しいと思う。場当たり的にその問題個所だけ
"を入れたりするのはMSの得意な独自解釈・・・。
と、今さらながらテ料理本を探す自分にちょっと懐古趣味。
0039仕様書無しさん
NGNG宿題は自分でやれよ。
=== 糸冬 了 ===
004039
NGNGスマソ
0041仕様書無しさん
NGNG0044仕様書無しさん
NGNGExcel97/2000の場合なんだけど、
セル内改行があるときは、そのセルは""で括られる、というのは良
いのだけど、セル内の改行が、0x0A で表現されている。
CSVファイルの行末はDOS/Windows のテキストだから 0x0D 0x0A。
テキストモードでファイルオープンして書き込もうとしたらマズイ。
何のためにこういう仕様になってるんでしょ? それともOffice XP
だったら違う?
0047仕様書無しさん
NGNGさっそくの確認サンクス。
今はExcel 97+ Windows 2000の環境しか手元にないのだけど、
この環境ではセル内改行が 0D0Aになってると読み込んだときに
点が付く。Officeは新しい方が良いということか...
0048仕様書無しさん
NGNG他のシステムで使えない場合が多いんだよね。
でも正しいCSVってどん何?だれか教えて、
数値のマイナス符号は前、後?
ダブルクォーテンションの表記は2度打ち?
カンマの場合は?
文字列に必ずダブルクォーテンションを括るのか?
値無しを認めるの?
などなど、、、。
固定長にカンマを差し込んだだけのCSVも見たことあるな...。
0049仕様書無しさん
NGNG0050仕様書無しさん
NGNG全てのフィールドは「"」で囲まれ、フィールド内の「"」は「""」になる。
005145
NGNGすまん。47を見てもう一度確認したところ、見た目には問題ないのだが、
セルの中でカーソルを動かすと、幅0の目に見えない文字(藁)が入っている。
てことで、45は撤回。セル内改行はExcel 2000でも0Aのみでないとダメ。
005247
NGNG了解。やはり2000でもマズかったようですね。
0053仕様書無しさん
NGNGFileMakerの仕様は初耳。CSVってやっぱりいろいろ方言があるんだ...
0054仕様書無しさん
NGNG0056仕様書無しさん
NGNGだから、CSVのパーサを作る時一番大変なのは、CSVの仕様を決定すること。
当然Excelモードは欲しいから、Excelのファイル形式を洗い出すところから
始めなきゃならん。
0057仕様書無しさん
NGNG0058仕様書無しさん
NGNGカンマとか引用符はどうするの?
0060仕様書無しさん
NGNGExcelだと、次のような感じ。
セル内にカンマや改行があれば、セルをダブルクォートで括る。
ダブルクォートで括ったセルにダブルクォートを入れたい場合は2個連続で1個
のダブルクォートとみなす。
エスケープシーケンスはExcelのCSVには多分ないと思う。
あとは >>59 が書いているように実装する者が決めることになるのだと
思う。セルがカンマ(と改行)でセパレートされてさえいたらとりあえず
CSVなんだし。
006158
NGNG0062仕様書無しさん
NGNG0063仕様書無しさん
NGNGだったら、Excelでいろいろ書きまくってCSVで保存してみたら?
Excelだったら改行以外の制御コードは扱わないで良いと思うけど。
0064仕様書無しさん
NGNGコーディングは終わったけど・・・
java でやることはきまってたのでストリームで読みながら、データの整合性を
チェックして・・・
きったないソースができた。解読不能
0066仕様書無しさん
NGNGこのスレをみてたのです。
Cでどうぞ
006756
NGNG0070仕様書無しさん
NGNGに載っているCSV分析について調べているページ。
http://dontaku.csce.kyushu-u.ac.jp/~yoshi_w/study/b4seminar/0612/0612.html
公式サイトもあるがURL忘れた。
ハッカーが書いてもやっぱりこれくらいやらないと分析できないのか?
MSのCSV仕様がいかに行き当たりばったりかわかります。
0071仕様書無しさん
NGNGThe Practice of Programming
by Brian W. Kernighan and Rob Pike.
http://cm.bell-labs.com/cm/cs/tpop/
Code from The Practice of Programming
http://cm.bell-labs.com/cm/cs/tpop/code.html
CSV programs from Chapter 4 を見るべし。
日本語版¥2800円也。コストパフォーマンス極めて高し。
0072仕様書無しさん
NGNGしなかったと思うのが良く分かります。
¥でカンマやダブルコーテーションをエスケープしていれば
こんな心配事しなくても済んだのに・・・
0073仕様書無しさん
NGNG0075仕様書無しさん
NGNG# とか $ だったらもっと簡単にならない? Shift-JISでもEUC-JPでも
共通でいけそうな気がするけど。
007775
NGNG>でも『エスケープは \ だ』って思ってる向きには使いづらいかも。
確かに。
# とか $ でエスケープしたら「何それ?」って言われそう。
ただ、CGIなんかだと8ビット目が立っていたり、コントロールコード
だったりしたら、%(文字コード)で処理してるし、途方もない暴挙では
ないような気もする。
0079仕様書無しさん
NGNGyacc & lexつかった方がはえぇ。
"の""は文字とか改行継続とかリードバッファ分割とかがソースを汚くする。
バッファ分割しないで丸ごとってのも、1GのCSVファイル読むと使いものに
ならない、とかなりそうで嫌だしなぁ。
00811
NGNG糞ばっかだな、ここ
0082仕様書無しさん
NGNG0083仕様書無しさん
NGNGのエスケープに引用符自体を連続して書くのはそれほどめずらしくもないような
気もする。
79でyacc、lexが出てるのを見て、一文字ずつ処理するオートマトンでなんと
かするってのを思いついた。きれいに実装できるかチャレンジしてみるか。
0084仕様書無しさん
NGNG0085null
NGNG008783
NGNGなんか全部ポストできないみたいだから、さわりだけ。
enum csv_result {
CSV_CONTINUE, CSV_ERROR, CSV_END, CSV_FIELD, CSV_LAST_FIELD
};
typedef struct csv_struct csv_t;
struct csv_struct {
enum csv_result (*parse)(csv_t *, int); /* 初期値はparse_plainにする */
int (*in)(void *); /* (バッファ|ファイル)から1文字取ってくる。終端以降ではEOF */
void *inp; /* inへ渡す引数 */
int (*out)(void *, int); /* バッファへ1文字追加 */
void *outp; /* outへ渡す引数 */
};
/* こいつらが中でcsv_struct.parseをうにうに変更する */
static enum csv_result parse_plain(csv_t *, int);
static enum csv_result parse_quote(csv_t *, int);
static enum csv_result parse_in_quote(csv_t *, int);
static enum csv_result parse_quote_in_quote(csv_t *, int);
enum csv_result
csv_reader(csv_t *csvp)
{
int c;
enum csv_result r;
if (csvp->parse == NULL)
return CSV_END;
for (;;) {
c = (csvp->in)(csvp->inp);
r = (csvp->parse)(csvp, c);
if (r != CSV_CONTINUE)
return r;
}
}
0088仕様書無しさん
NGNGコードは全部で何行よ?
0089仕様書無しさん
NGNGさわりがこれじゃ・・・(以下略)
0090仕様書無しさん
NGNGExcel の CSV
カンマで区切られた文字列を1要素とする。
基本的に改行を1レコードの区切りとする。
要素の中に[,]["][CR-LF]を含む場合
1.要素内の["]は[""]に変換する。
2.要素内の[CR-LF]は[LF]に変換する
3.["]で要素全体を挟む
でいいのかな?
めんどくさいね。
0091仕様書無しさん
NGNGこれでは仕様が簡単過ぎるのか?
でも、わざわざ左右の空白のトリミングもしてるしなぁ。
0092(゚д゚)ウマー
NGNG009383
NGNGcsv_t使わないでcsv_reader内にstaticな変数を置き、でかいswitch文
使ってた時は50行くらいだったかな。ネストが深くなるし、FALLTHROUGH
使いまくりで汚かったからオートマトンは関数ポインタで実現することにし、
汎用的に使えるように色々改造してったらセットアップ部も含めて全部で
100行ちょいくらいになった。
他の言語だともっとスマートに書けるかな。
0094仕様書無しさん
NGNG少なくともExcelだとセル内文字列の左右に空白がある場合でも""でくくりません。
だから数値データであることが明らかでない限りトリミングすると不都合があるよ。
0095通りすがり
NGNG>要素の中に[,]["][CR-LF]を含む場合
>1.要素内の["]は[""]に変換する。
>2.要素内の[CR-LF]は[LF]に変換する
>3.["]で要素全体を挟む
補足が必要。入力の場合は
赤",青,黄
は、
「赤"」、「青」、「黄」
と解釈される。Excelでは。(Excel2000で確認)
また、出力のとき「赤"」がそのまま出力されるか
「"赤"""」
と出力されるかどうかは、バージョンによる。
(いつから後者になったかは、よく分からない)
ちなみに、赤"はヴァカと読む。
0096仕様書無しさん
NGNG> 「赤"」、「青」、「黄」
> と解釈される。Excelでは。(Excel2000で確認)
知らんかった。フィールドの最初の「"」以外はクオートの開始にはならないわけね。
0097仕様書無しさん
NGNG>と出力されるかどうかは、バージョンによる。
これが困るんだよね。ゲイツ君
009991
NGNGただ、C の方はちと汎用性に欠けるコードだけど。
010191
NGNG1 の書き込みから少なくとも一週間経ってから。:P
enum とかプロトタイプとか含めるともうちょい行数増えるけどね。
あと、strtok と似たような仕様で、
純粋に切り出すところの処理しか書いてない。
それと、Excel の仕様と合致してないところが少し...。
でも、Excel の仕様同士がそもそも合致してない!
C は入出力の両方とも文字列として書いてるので汎用性低い。
83 さんのように汎用的にすると、
読み出し書き込み処理も書く必要があって、
C ではどうしても長くなってしまう。
そこをさぼってるから 44 行に収まるのであって、
まともに作ると全体ではかなり長くなってしまう。
C++ だとそのあたり istream や string/ostream が使えて、
気軽に汎用的にすることができる。
0102仕様書無しさん
NGNG0103仕様書無しさん
NGNG0104仕様書無しさん
NGNG腕に自信が有るプログラマなら討論すべし。
0105仕様書無しさん
NGNG010691
NGNG{
CSV_TOKEN, CSV_EOL, CSV_END,
} csv_ret_t;
csv_ret_t csvtok(char** pstart, char* buffer, int bufsize)
{
int i, ibuf = 0;
char letter;
char* start = *pstart;
if(start[0] == '\0')
return CSV_END;
for(i = 0; ; i++)
{
letter = start[i];
switch(letter)
{
case ',':
if(start[i + 1] == '\n' || start[i + 1] == '\0')
letter = start[++i];
case '\0':
case '\n':
goto MAIN_LOOP_OUT;
case '"':
for(i++; letter = start[i], letter != '\0'; i++)
{
if(letter == '"')
{
if(start[i + 1] != '"')
break;
i++;
}
if(ibuf < bufsize - 1)
buffer[ibuf++] = letter;
}
break;
default:
if(ibuf < bufsize - 1)
buffer[ibuf++] = letter;
break;
}
}
MAIN_LOOP_OUT:
buffer[ibuf] = '\0';
*pstart = &start[i + 1];
return (letter == '\n' || letter == '\0' ? CSV_EOL : CSV_TOKEN);
}
0107C++ ver
NGNGcsv_ret_t csvtok(istream& src, basic_string<char_type>& dst)
{
dst.erase();
int letter = src.get();
// char_type へのキャストでは危険? でも、L 使うとテンプレートにできないし。
if(letter == (char_type)(unsigned char)('\0') || letter == char_traits<char_type>::eof())
return CSV_END;
for(; !src.eof(); letter = src.get())
{
switch(letter)
{
case (char_type)(unsigned char)(','):
letter = src.peek();
if( ! (letter == (char_type)(unsigned char)('\n') || letter == char_traits<char_type>::eof()) )
return CSV_TOKEN;
src.get();
case (char_type)(unsigned char)('\n'):
return CSV_EOL;
case (char_type)(unsigned char)('"'):
for(letter = src.get(); !src.eof(); letter = src.get())
{
if(letter == (char_type)(unsigned char)('"'))
{
if(src.peek() != (char_type)(unsigned char)('"'))
break;
src.get();
}
dst += letter;
}
break;
default:
dst += letter;
break;
}
}
return CSV_EOL;
}
010879
NGNG#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CleanUpErrorReturn(buf) { free(buf); return( NULL ); }
#define CopyDataWithFree(Dest, Src) { \
strcpy(Dest, Src); free(Src); Src = NULL; \
}
#define SetDataWithXchgPointer(Buf, Mst, c, len) { \
CopyDataWithFree(Buf, Mst); \
Buf[len-2] = c; Buf[len-1] = '\0'; Mst = Buf; \
}
char *GetWord(FILE *fp)
{
size_t len;
static char c, c2, *pcWord, *pcLocalBuf;
len = 0;
if( (pcWord = (char *)malloc(++len)) == NULL ) return( NULL );
pcWord[0] = '\0';
if( (c = fgetc(fp)) == EOF ) CleanUpErrorReturn(pcWord);
010979
NGNGcase '"': /* Quote */
while( (c = fgetc(fp)) != EOF ) {
if( (pcLocalBuf = (char *)malloc(++len)) == NULL ) {
fprintf(stderr, "\n[%d] malloc()\n", __LINE__);
CleanUpErrorReturn(pcWord);
}
switch( c ) {
case '"': /* "" Check */
switch( (c2 = fgetc(fp)) ) {
case '"':
SetDataWithXchgPointer(pcLocalBuf, pcWord, c, l
break;
case EOF:
default:
fgetc(fp); // Trim ','
CopyDataWithFree(pcLocalBuf, pcWord);
return( pcLocalBuf );
}
break;
default:
SetDataWithXchgPointer(pcLocalBuf, pcWord, c, len);
}
}
011079
NGNGdo {
if( (pcLocalBuf = (char *)malloc(++len)) == NULL ) {
fprintf(stderr, "\n[%d] malloc()\n", __LINE__);
CleanUpErrorReturn(pcWord);
}
switch( c ) {
case '\r':
fgetc(fp); // Trim '\n'
case ',':
CopyDataWithFree(pcLocalBuf, pcWord);
return( pcLocalBuf );
default:
SetDataWithXchgPointer(pcLocalBuf, pcWord, c, len);
}
} while( (c = fgetc(fp)) != EOF );
}
return( pcWord );
}
011179
NGNG{
char *pc;
FILE *fp;
if( argc > 1 ) {
if( (fp = fopen(argv[1], "r")) == NULL ) {
perror("fopen");
exit(1);
}
}
else
fp = stdin;
while( (pc = GetWord(fp)) != NULL ) {
printf("[WORD] <%s>\n", pc);
free(pc);
}
if( fp != stdin )
fclose(fp);
return( 0 );
}
0112109
NGNGcase '"': /* "" Check */
switch( (c2 = fgetc(fp)) ) {
case '"':
SetDataWithXchgPointer(pcLocalBuf, pcWord, c, len); ←かけちやた
break;
0113仕様書無しさん
NGNG0115仕様書無しさん
NGNGめげずに投稿しろよ!間違っててもいい。
それについての批判はプラス指向にとらえればいい。
そこまでの発想力があるならもったいない。
0116仕様書無しさん
NGNGってことだけど、それ、目標を間違えてないか?
Excelの*.csvって、基本的にExcel独自の保存形式の1つだよ。
だから、"007"を文字列「007」じゃなく数値「7」って解釈して
平気でいたりする。
でも、ほとんどのアプリケーションは"007"は文字列「007」って
解釈して欲しいんじゃないか?
Accsess互換のほうがまだましな気がする。
0117Kusakabe Youichi
NGNG> Excelの*.csvって、基本的にExcel独自の保存形式の1つだよ。
でもExcel以前からありまたよ:)
0118仕様書無しさん
NGNGププッ(W
0119Kusakabe Youichi
NGNG> >でもExcel以前からありまたよ:)
>
> ププッ(W
「とりあえず何か言っておく」なんてのができるのも匿名ならではですか? :)
0120仕様書無しさん
NGNG0121116
NGNGだからあ、「Excelの*.csv」っていってるじゃん!
それ以前からあったK3などとは別の話。
0122Kusakabe Youichi
NGNG> だからあ、「Excelの*.csv」っていってるじゃん!
そうじゃなくてcsvはExcel以前からあったよと言っているだけですよ?
0124仕様書無しさん
NGNGアフォに決まってるじゃないか。お前はアフォか。
0125仕様書無しさん
NGNG許してあげてください。
0126仕様書無しさん
NGNG0127Kusakabe Youichi
NGNG> だから、、「Excelの*.csv」って、特定してるんでしょ
いいえ、わたしはしてませんよ。
0128仕様書無しさん
NGNGください。
0129仕様書無しさん
NGNGCSV使うくらいなら、<TABLE></TABLE>使ってやるぅ!!
0130Kusakabe Youichi
NGNG> 先生はExcelについてあまり詳しくないので
> 許してあげてください。
とか言っているやつはイースターエッグを見つけられなかったやつだとみた:)
0131Kusakabe Youichi
NGNG> 先生はロータスなら少しつかえます。
そんなもんつかってどうする:)
0132Kusakabe Youichi
NGNG> 先生は話の流れが理解できないので
理解できていないのはあなたでしょうね。
0133Kusakabe Youichi
NGNG> あぁ、いつから.docと付くファイルがプレーンなテキストで書かれたドキュメントファイルじゃ無くなったんだろう。
MS-Wordがでてきたころからdしょうね。
0135仕様書無しさん
NGNG許してあげてください。
0136仕様書無しさん
NGNG0137116
NGNGこれがクサカベたんなのか。。。
やはり、初めから無視すべきだったのか。。。
0138Kusakabe Youichi
NGNG> 困ったとき誤魔化すのは先生の得意技なので
ということにしたいのですね? :)
0139K子
NGNG少しの事は大目にみてください。
0140Kusakabe Youichi
NGNG> 先生は感情が高ぶると手が震えてキーがまともに打てなくなるので
そう思うと安心できるのですか? :)
# あいにく誤植はしょっちゅうですが。
0141仕様書無しさん
NGNGしまうのは他に書くことが無くなったときなので、それ以上
先生を追い詰めるのはやめてあげてください。
0142Kusakabe Youichi
NGNG> すぐに「ということにしたいのですね? :) 」と書いて
すぐにって、速度は関係ないですね。
頻度については、「そんな反応されるような、ごまかし'感想'」を
補足しているだけなので、それが出てくる頻度にすぎないですね。
> しまうのは他に書くことが無くなったときなので、
と思いたいわけですね? :)
0143仕様書無しさん
NGNG日下部も必死なんだよ。
奴の日常会話を見てみろ↓
「日下部」ちくしょう!ちくしょう!
「けいこ」あなた、また2chを荒らしているのね?
「日下部」うるさい、お前は黙ってろ!
「けいこ」あなたの、あなたのせいで、私や娘に身の危険が迫っているのよ!
「日下部」2chの奴らのせいで私の本が売れなくなったのだぞ!
「けいこ」だからって自分の本を何百冊も買わなくても・・・
「日下部」黙れ、黙れ!
0144仕様書無しさん
NGNG0145仕様書無しさん
NGNG/  ̄ ̄ ̄ ̄\
/ ヽ
/ ヽ
| 人_____________ |
|● ● | | クソスレもほどほどにね
/ / / |
/|▼ ./ / |
____________ |___|┴― /__/ | 丿
\〜〜 / |  ̄ |__/ )
\ /___ (\___ / )―――
( つ(__/ \ ( | / )
(__フ| \ / ( | / )
⊂―||―、 | /
0146仕様書無しさん
NGNG0147Kusakabe Youichi
NGNG> もう何が何やら。
ってのは、「何かケチつけてみたいけど具体的なことは何も言えないので
とりあえず何か言ってみる」テストですか? :)
0148K子
NGNG0149まにあ
NGNG0150娘
NGNGみっともないからやめて。
0151ふつーATOK
NGNG>In article >>146, 仕様書無しさん/sage/146 wrote:
>
>> もう何が何やら。
>ってのは、「何かケチつけてみたいけど具体的なことは何も言えないので
>とりあえず何か言ってみる」テストですか? :)
これと同じですね。
「はつみみです」
「と思いたいわけですね」
「もう思考停止ですか」
「ということにしたいのですね」
「そう思うと安心できるのですか」
「こわがらなくてもいいのにー」
0152仕様書無しさん
NGNG0153仕様書無しさん
NGNGごしょく 0 【誤植】
--------------------------------------------------------------------------------
印刷物で、文字・記号などに誤りのあること。ミス-プリント。
0154仕様書無しさん
NGNGワラタ
日下部脳内辞書にはなんと書いてあるか見てみたい(藁
0155仕様書無しさん
NGNG0156仕様書無しさん
NGNG今時のエクセル
1,2,3,4,5,,,\n
a,b,c,d,e,f,g,h\n
古いエクセル
1,2,3,4,5\n
a,b,c,d,e,f,g,h\n
この違いに注意して解析してみてください。
「CSV編集ソフト」と冠するもののなかでもこういった
テキストを吐き出すものが稀に存在します。
読み込みに失敗した場合にはまずカンマ(要は区切り記号ね)
の数を疑ってみてください。
0157仕様書無しさん
NGNGやっと臭蚊屁が帰りましたねぇ。ソンナニ コワガラナクテモ イイノニ
「全く」臭蚊屁ってなんで話の流れが読めないんだろう? ト イウコトニ シタイノデス
そもそも、彼の辞書には「全く」は「全く」との読みでは載っていないらしい
ハツミミデス。
0158仕様書無しさん
NGNG> ってのは、「何かケチつけてみたいけど具体的なことは何も言えないので
> とりあえず何か言ってみる」テストですか? :)
生々しい日下部の屁理屈ではそうかもしれないが、
生々しい日下部以外の人には意味が通じている。十分でしょ。
0159仕様書無しさん
NGNG臭蚊屁には感謝....スルワケネエェ
0160Kusakabe Youichi
NGNG> > > もう何が何やら。
> > ってのは、「何かケチつけてみたいけど具体的なことは何も言えないので
> > とりあえず何か言ってみる」テストですか? :)
>
屁理屈ではそうかもしれないが、
屁理屈だということにしたいのですか? :)
0161仕様書無しさん
NGNG0162仕様書無しさん
NGNG> > 生々しい日下部以外の人には意味が通じている。十分でしょ。
> 屁理屈だということにしたいのですか? :)
ほのかに臭う日下部はだらしないねぇ。正しい引用も出来なくなってきたの?
0163仕様書無しさん
NGNG0164仕様書無しさん
NGNGみんな気をつけろ!スレ違いの話題に流されるな!
0165仕様書無しさん
NGNG007の話は頷ける。
Excel97なのだけど
(1)007 って打ったら セル上で 7。 CSV で 7。このCSVをExcelで再読み込みしたら 7。
(2)'007 って打ったら セル上で 007。CSV で 007。このCSVをExcelで再読み込みしたら 7。
(3)CSVのテキストで '007 って入れておいてExcelで読み込んだら '007 って「'」が付く。
(4)CSVのテキストで "007" って入れておいてExcelで読み込んだら 7 になる。
CSVからの読み込みで 007 にする方法があったら教えてくれー。
「Accsess互換」っていうのもちょっと気になるよ。
ちなみにロータス123 2001 だと、(4)のケースは 007 と認識してくれる。
0167165
NGNG俺は「ExcelのCSVを解析する」という前提で話が進むことは、それで良いと思ってる。
仕様の良し悪しは全く別の話。
「ExcelのCSVを解析する」ことが要求されることは実際多いし。
0168165
NGNG>ダブルクォートでくくる
せっかくレスくれたけど、>>165 の(4)の通り。
Excel97は"007"とCSVに書いておいても、読み込んだら「7」になってしまう。
Excel2000や2002あたりでは変わっている?
0169166
NGNGどうやるんだろう
0170165
NGNGあ、それってAccessの話?
0171165
NGNGすんません。>170が かぶっちゃった。
0172166
NGNGいまEXCEL2000で確かめてみたが
"007"→'007
'007'→'007'
""007→7(なんだこの変換は?)
\007→\007
\"007\"→\"007\"
\'007\'→\'007\'
ダブルクォートでくくると、中のカンマを文字列の一部としてみてくれるらしい
"007,00"→007,00
0173166
NGNG"007"→7だな
■ このスレッドは過去ログ倉庫に格納されています