|
|
2014/6/23(Mon) 20:28:18|NO.62585
直接指定して画像をDL出来るようにはなりました
CSVの情報から次々と自動で取り込むようにするにはどうしたら良いでしょうか?
どうぞよろしくお願いします。
#include "hspinet.as"
dirlist s, "Q-3146", 5
if stat = 0 {
exist "Q-3146"
if strsize = -1 {
mkdir "Q-3146"
mes "作成完了"
} else {
mes "すでにフォルダは存在します"
}
} else {
mes "すでにfolderが存在します"
}
netinit
neturl "http://www.militaryshop.jp/upload/save_image/Q-3146/"
chdir "Q:\\Q-3146"
netload "Q-3146_01.JPG"
picload "Q-3146_01.JPG"
netload "Q-3146_02.JPG"
picload "Q-3146_02.JPG"
netload "Q-3146_03.JPG"
picload "Q-3146_03.JPG"
end
<>
|
|
2014/6/23(Mon) 21:48:29|NO.62588
notesel関係(文字列を一行ずつ扱う)と
csvstr(csvを配列に変換する)と
getpath(パス情報の変換?)で出来そうですね。
・一行ずつ取り出す。
・配列に変換する。
・要素0をフォルダ情報として処理。
・要素1以降をパスとファイル名に分離してダウンロード処理。
|
|
2014/6/24(Tue) 01:29:03|NO.62590
たんす様
どうもありがとうございます
notesel関係(文字列を一行ずつ扱う)と
csvstr(csvを配列に変換する)と
getpath(パス情報の変換?)で出来そうですね。
参考にしてサンプルなどをDLして試しているのですが、どうもうまく行きません。
実際のCSVですが、
1900,A-641,メディカルバッグ コットン,1,25000,"メディカルバッグ
米軍放出品、中古
古いコットン製"
このように”で囲まれた改行が含まれているのです。
, で区切って一個一個取り出す方法を教えて頂けないでしょうか?
一行に5個の情報が入っております。
//商品ID,商品コード,商品名,在庫数,販売価格,詳細
行数は1800ぐらいです
1.商品IDは使わない
2.商品コードでフォルダを作って
その商品コードの画像をDLする
3.商品名と販売価格と詳細を一つのテキストに収納したい。
どうぞよろしくお願いします。
|
|
2014/6/24(Tue) 03:00:39|NO.62591
notesel data
; noteload "data.csv" ;⓪想定ファイル名
data = "1900,A-641,メディカルバッグ コットン,1,25000,\"メディカルバッグ 米軍放出品、中古 古いコットン製\""
repeat notemax
noteget ss,cnt
split ss,",",ss
mes "mkdir " +dir_cur+"\\"+ss(1) ;①フォルダーを作る(カレントの下に)
mes "picload \""+dir_cur+"\\"+ss(2)+"\"" ;②画像を読み込む(DLするにはURLが必要)
strrep ss(5),"\"","" ;③不要なダブルクオーテーションの削除
mes ss(2)+" "+ss(4)+" "+ss(5) ;④詳細(スペース区切り)
loop
|
|
2014/6/24(Tue) 04:40:59|NO.62592
fortunehill様
ソースありがとうございますm(_ _)m
早速ヒントに従って当てはめたいと思います。
どうもありがとうございます
|
|
2014/6/24(Tue) 05:12:16|NO.62593
fortunehill様
詳細をテキストファイルに書き出すにはどうしたら良いのでしょうか?
下記のようにしたところ、全てのデータが書き込まれてしまいました。
すみませんが、よろしくお願いします。
notesel data
noteload "商品0.csv" ;⓪想定ファイル名
; data = "1900,A-641,メディカルバッグ コットン,1,25000,\"メディカルバッグ 米軍放出品、中古 古いコットン製\""
repeat notemax
noteget ss,cnt
split ss,",",ss
mes "mkdir " +dir_cur+"\\"+ss(1) ;①フォルダーを作る(カレントの下に)
mes "picload \""+dir_cur+"\\"+ss(2)+"\"" ;②画像を読み込む(DLするにはURLが必要)
strrep ss(5),"\"","" ;③不要なダブルクオーテーションの削除
mes ss(2)+" "+ss(4)+" "+ss(5) ;④詳細(スペース区切り)
syousai = ss(5)
noteadd syousai
notesave ss(1)+".txt"
loop
|
|
2014/6/24(Tue) 10:49:16|NO.62596
データに改行コードが入っているので、
せっかく教えて頂いたコードではうまくいきませんでした。
まずは詳細だけをテキストに保存したいのです。
そこで下記のようにしたのですが、正常なデータを保存ができません。
notesel やnoteaddはどう使うのでしょうか?サンプルやヘルプを見てもうまくいきませんでした。
テスト用のデータはコチラにUPしました。
http://nangoku.hustle.ne.jp/TEST.csv
どうか教えてください、よろしくお願いします。
#include "hspda.as"
screen 0, ginfo(20), ginfo(21)
width 400, 1300
//dialog "", 16, "" // ファイルの選択(CSVファイルを選択)
//filename = refstr
//filename ="商品3.csv"
filename ="TEST.csv" //テスト用
sdim buf, 0xffff // ファイルの内容を格納
sdim _line, 0xfff // 1行分の文字列を格納
sdim tmp, 0xfff // 一時的に使用
len = 0 // 取得した行数
notesel buf // メモリノートパッドの初期化
noteload filename // ファイルの読み込み
sdim records, 0xfff, notemax // CSVの行数分メモリを確保
// メインループ
repeat notemax
noteget _line, cnt // 1行取得
// 1行分をメモリノートパッド形式でCSVに変換し、
// records.cntに保存
csvnote tmp, _line
records.cnt = tmp
len++ // 行数インクリメント
loop
// 表示テスト。records配列をrepeatで回し、strtrimで「"」をトリミングして表示
for i, 0, len, 1
//if 詳細フラグ=0{ mes "【" + (i + 1) + "行目】"}
notesel records.i
repeat notemax
noteget _line, cnt
データ=strtrim(_line, 0, '"')//変数「データ」に取り出した文字を代入
if データ="[END]" {//1商品の終わりをチェック
mes "":詳細フラグ=0:notesave 商品ID+".txt"
goto *end2
}
if (cnt + 1)=4 { 詳細フラグ=1 }//商品詳細フラグを立てる
if 詳細フラグ=1 {//商品詳細である
mes "詳細:"+データ
notesel buf
noteadd データ
}
if 詳細フラグ=0 {//詳細ではない
if (cnt + 1)=1 { 商品ID=データ : mes "商品ID:"+データ}
if (cnt + 1)=2 { 商品名=データ : mes "商品名:"+データ}
if (cnt + 1)=3 { 価格=データ : mes "価格:"+データ}
}
*end2
loop
next
stop

| |
|
2014/6/24(Tue) 12:51:17|NO.62597
こんな感じで余分な改行を消したデータが作れるので
あとは応用で。
notesel csv
noteload "TEST.csv"
strrep csv, "\n", ""
strrep csv,",[END]","\n"
mes csv
notesave "csv_fix.csv"
|
|
2014/6/24(Tue) 15:07:31|NO.62598
あり様
こんにちは、いつもありがとうございます。
ソースありがとうございます
早速使ってクリーンなCSVが出来上がりました
ビックリです。
どうもありがとうございますm(_ _)m
|
|
2014/6/24(Tue) 19:35:26|NO.62599
最初と状況が違うようですが、作ってみました。
#include "hspda.as"
screen 0, ginfo(20), ginfo(21)
width 800, 1300
//変数初期化
#enum e_商品ID 0
;#enum e_商品コード
#enum e_商品名
;#enum e_在庫数
#enum e_販売価格
#enum e_詳細
#enum e_max
sdim buf, 0xffff // ファイルの内容を格納
sdim _line, 0xfff // 1行分の文字列を格納
sdim tmp, 0xfff // 一時的に使用
len = 0 // 取得した行数
sdim tag
//tag="商品ID","商品コード","商品名","在庫数","販売価格","詳細"
tag="商品ID","商品名","販売価格","詳細"//項目数が少なかったので変更版。
//ファイル選択
dialog "csv", 16, "" // ファイルの選択(CSVファイルを選択)
if stat!1:end//キャンセルしたら終了
filename = refstr//ファイル名を保持
//ファイル読み込み
notesel buf // メモリノートパッドの初期化
noteload filename // ファイルの読み込み
//データ補正
strrep buf, "\n", ""//データ中の改行を削除
strrep buf,",[END]","\n"//データ終了区切り[END]を改行に変更
strrep buf,"\"",""//"を削除
sdim records, 0xfff, e_max // CSVの項目数分メモリを確保
// メインループ
repeat notemax
wait 1
noteget _line,cnt //csvから1行取得
csvstr records,_line //records配列に分割
repeat e_max //項目数分 繰り返す
// if cnt=e_詳細:continue //詳細をスキップ
mes ""+tag.cnt+":"+records.cnt //表示
loop
mes //改行でスペース空け
loop
stop
|
|
2014/6/25(Wed) 00:01:50|NO.62607
たんす様
あらたにソースをありがとうございました
早速使って見ます、本当にみなさまどうもありがとうございました。
これからもよろしくお願いします。
|
|