プログラミング初心者です。
ネットや本で調べてみたのですが、どうもわからなかった為、
ここに質問を挙げさせていただきました。
今、担当している仕事で、ASPのファイルを作成しています。
機能としては、あるCSVファイル(test.csv)から
列の値を指定し、その値を含んでいる行を検索し、
その行の値をテキストボックスにそれぞれ表示させ修正(他の行の値は変更しない。)、
もしくは選択した行のみの削除(値を無くすのではなく、行自体の削除)を行いたいのです。
(例)
■修正
test.csvの内容が下記のような場合、
国 | 地方 | 都道府県
++++++++++++++++++++++++++
日本 | 関東 | 東京
日本 | 東北 | 青森
日本 | 九州 | 福岡
1.「地方」の列から「東北」の行を選択し、それぞれの値をテキストボックスに表示。
2.1で選択した行の都道府県を「秋田」に変更し、上書き。
3.test.csvの内容が下記のように変更されている。
国 | 地方 | 都道府県
++++++++++++++++++++++++++
日本 | 関東 | 東京
日本 | 東北 | 秋田
日本 | 九州 | 福岡
■削除
1.「地方」の列から「関東」の行を選択し、それぞれの値をテキストボックスに表示。
2.1で選択した行を削除し、上書き。
3.test.csvの内容が下記のように変更されている。
国 | 地方 | 都道府県
++++++++++++++++++++++++++
日本 | 東北 | 青森
日本 | 九州 | 福岡
※前提条件として、1つの列内には同じ値は入らないものとします。
いろいろ調べてみて検索、表示は何とかできそうなのですが、
修正や削除の方法がわかりませんでしたので、
お手数をおかけして申し訳ありませんが、ご存知の方がいらっしゃったら
参考になるソースのご教示をお願い出来ますでしょうか。
初心者ということもあり、そもそもこのような機能をASP(VBScript)で行えるのでしょうか?
その点についても、教えていただけると嬉しいです。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
改行というのは見た目上だけのものでファイルの中身では、
改行はないような形でずっと横一列に並んでいるだけの状態です。
そのため、先頭からのバイト数が変わってしまうような修正や削除は通常出来ません。
どうしてもするのならば、
内容をメモリ上に読み込んでから必要な修正を行い、全部書き直すです。
あるいは、もう一列フラグ的な列を追加して、更新内容をcsvに追記していきます。
csvのサイズはどんどん増加していくことになりますので、最適化するプログラムも必要になりますが
挿入、修正、削除を行う場合のコストはへります。
逆に、表示するときにすべてを読み込まなければならないので表示の時のコストは増えます。
ASPのように不特定多数のアクセスがある場合、ファイルの排他制御をわすれずに。
No.1
- 回答日時:
CSVなどはその場で問題になっている1行だけを書き換えて、あとは何もしないでそのままで。
書き換えた行だけ変わるということは出来ない。いわば、部分的書き換えが出来ないといったらよいのか。
(1)まず変わるための材料を提供するデータとしてCSVファイルを使う(全日本から関東だけのデータを表示するなど)
この場合は全データを読んで読む都度IF文で関東を判別し、該当ならとればしまい。
(2)関東のデータの中から変更されたもの(だけ)を変更後でCSVなりで書き出す。その際にコードの唯一の識別のためのIDのようなもの(キーという)を持っていることが必要。
削除するものはそういうサインを持ったレコードを書きだす。
(3)もとのデータに対し変更データをもちいて、ID(マッチングキー)を頼りに結びつけて、変更後のデータで置き換えたデータを作る。
変更の無い行(マッチングしなかったレコード)はそのまま行単位で書き出す。
これをファイル更新Updateという。
更新のためのロジック(アルゴリズム的なもの)は定石が在る。
ーー
現在では、全部データが画面に見えていて、データ変更は自由で、変更後で保存は、意識せずともやってくれる、エクセルしか知らない層が増えて、こんなことは思いつかないのだろうが、コンピュターを事務に使い始めたテープベースの時代には、こういう方式が当たり前(主流)であったのだ。
今は使えるパソコンメモリが増えて、(膨大なデータでなければ)全レコードをメモリ内展開や、配列に持つことも可能になっているので、こういうことを考える初心者も居るだろうが。
ーー
本題の、VBScriptでもシーケンシャルファイルのCSVを書いたり読んだりできるスクリプトはあるので出来る。
ーー
WEBを離れてVBScriptでテキストボックスを表示したり、選択したものを掴むコード例がWEBに少ないので、エクセルVBA+VBScriptでやるほうがやりやすいのでは。
質問者の課題がWEBと関連しているのか、説明されて無くて、VBScriptを使う必然性が良くわからないが。
エクセルにもツールーマクローMiicrosoft Script Editorがあるが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 転職 長く続けられる好条件の求人でしょうか? 3 2023/07/12 18:45
- 転職 下記のような募集は、良い会社でしょうか?どう思いますか?入ってみたら良くない事が無いでしょうか? 4 2023/03/03 16:40
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- 郵便・宅配 北海道版の日刊スポーツとスポーツ報知を購入しましたが1週間以上たっても届きません。 1 2023/02/28 21:34
- その他(住宅・住まい) 皆様、どちらにお住まいですか?? 9 2022/11/19 10:29
- その他(国内) 京都に行ったことないのですが、そんな日本人は珍しいですか? 9 2023/02/08 20:29
- その他(国内) 3時!夜中なのか早朝なのか微妙な時間、5時に出るならシャワー浴びてお茶淹れて神棚、仏壇 2 2022/05/20 03:58
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- ホテル・旅館 年末年始、本州内の旅行先・ホテルのお勧めアドバイス 2 2023/08/17 14:42
- その他(国内) 北九州市と川崎市はどちらが都会ですか。 9 2022/10/10 12:40
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBScriptでCSVファイルを読み出したい
その他(プログラミング・Web制作)
-
VBSで指定行に挿入
その他(プログラミング・Web制作)
-
バッチでcsvファイルの指定のカラムを編集したい
その他(プログラミング・Web制作)
-
-
4
VBScriptで、ファイルから任意の行のみ取り出す方法について
その他(プログラミング・Web制作)
-
5
VBScriptにて、csvファイルから特定のレコードを取得したい
Visual Basic(VBA)
-
6
VBスクリプトでテキストファイルの行数カウント
その他(プログラミング・Web制作)
-
7
VBSでをエスケープする文字は?"
その他(プログラミング・Web制作)
-
8
バッチで118項目のCSVを処理したいですが。。。
その他(開発・運用・管理)
-
9
vbsのセル値の取得について
その他(プログラミング・Web制作)
-
10
VBscriptで「改行」と「」を置換させる"
その他(プログラミング・Web制作)
-
11
CSVファイルからダブルクォーテーションを削除したい。VBS使用で。
Word(ワード)
-
12
csvをVBScriptで加工する方法を教えてください。
Visual Basic(VBA)
-
13
vbsで最後の行を削除する
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
エクセルVBA 大容量CSVファイル...
-
HTMLのリンク先ページの文字コ...
-
Windowsのバッチファイルについ...
-
特定文字を入ってるCSVの特定の...
-
csvファイルを列数ごとに分割す...
-
【エクセル マクロ】読み込ん...
-
データ解析ソフトRでのファイル...
-
VBAでcsvファイルを読み込んで...
-
複数のCSVファイルのAccessテー...
-
c#でcsvから指定の1行だけを読...
-
バッチでCSVを処理する時、空の...
-
マクロから出力されるcsvのダブ...
-
CSV出力して、MS/EXCELで開くと...
-
CSVファイルの項目行を削除...
-
COBOL85でのCSVファ...
-
CSV形式での保存時に”文字列...
-
エクセル形式のファイルの読み込み
-
【ExcelVBA】UTF-8の文字コード...
-
ファイルのアクセス回数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
CSV形式での保存時に”文字列...
-
複数のcsvファイルをExcelに一...
-
csvファイル 項目数取得
-
csvファイルでの日付設定「yyyy...
-
バッチでCSVを処理する時、空の...
-
マクロから出力されるcsvのダブ...
-
csvファイルを列数ごとに分割す...
-
csvファイルのデータの一部を取...
-
エクセル形式のファイルの読み込み
-
エクセルVBA 大容量CSVファイル...
-
CSVファイル作成
-
EXCEL|csvで保存→開くcsvを閉じる
-
CSVファイルの項目行を削除...
-
巨大なCSVの加工(指定列のみの...
-
データ解析ソフトRでのファイル...
-
VBAでCSVファイルのデータを集...
-
【ExcelVBA】UTF-8の文字コード...
-
【C#】パス名で無効な文字
-
【エクセル マクロ】読み込ん...
おすすめ情報