C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: listBoxに入れたファイルの読み込み


(過去ログ 100 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■59694 / inTopicNo.1)  listBoxに入れたファイルの読み込み
  
□投稿者/ Haru (7回)-(2011/06/03(Fri) 17:36:07)

分類:[.NET 全般] 

listBoxに複数のファイル名(csvファイル)をオープンファイルダイアログから取得し、取得したファイルを1つ目から最後まで
一つずつ順番にDataGridViewにそのファイルのデータを表示させたい。
            (例:1つ目のファイルを読込、DataGridViewにデータを表示させて、その下に2つ目のファイルを読込み、DataGridViewにデータを表示させる。)
そのデータを読み込むときにID(1,2,3,4,・・・・)を先頭につけていく。
            (例:1つ目のファイルにデータが2行あったら、2つ目のファイルのデータを読込、表示させるときにつくIDは3となるようにしたい。)


いろいろ調べ、一部のPGまではわかったんですが、
ファイル名を入れるところ等がわかりません。
アドバイスをお願いいたします。

int L_Count = listBox1.Items.Count;
int id_Count=0;

//csvファイルを取り込む
Microsoft.VisualBasic.FileIO.TextFieldParser txtParser =
new Microsoft.VisualBasic.FileIO.TextFieldParser("ファイル名.csv",System.Text.Encoding.GetEncoding("shift_jis"));
//区切り文字形式
txtParser.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited;
txtParser.SetDelimiters(",");



引用返信 編集キー/
■59699 / inTopicNo.2)  Re[1]: listBoxに入れたファイルの読み込み
□投稿者/ ザキヤマ (1回)-(2011/06/03(Fri) 19:14:54)
前回の質問および、別HN(=TBee=MAY=Yuki)を見る限り、C#の質問ということでいいでしょうか?
引用返信 編集キー/
■59704 / inTopicNo.3)  Re[1]: listBoxに入れたファイルの読み込み
□投稿者/ επιστημη (2618回)-(2011/06/03(Fri) 22:14:46)
επιστημη さんの Web サイト
> ファイル名を入れるところ等がわかりません。

んじゃファイル名を入れるところ。

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // なんかボタン押されたら
        private void button1_Click(object sender, EventArgs e)
        {
            // OpenFileDialogを出して、
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                // 選択されたファイル名をまるっとlistboxに投げ込む
                listBox1.Items.Clear();
                listBox1.Items.AddRange(openFileDialog1.FileNames);
            }
        }
    }
}

引用返信 編集キー/
■59706 / inTopicNo.4)  Re[2]: listBoxに入れたファイルの読み込み
□投稿者/ shu (751回)-(2011/06/03(Fri) 22:25:51)
Linq,FileInfo, DataSource,DisplayMemberを使用してみました。

            if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
            {
                var files = (from fullpath in openFileDialog1.FileNames select new FileInfo(fullpath)).ToList();
                listBox1.DataSource = files;
                listBox1.DisplayMember = "Name";
                int ID = 0;
                foreach(var fl in files)
                {
                    //--- 各ファイルの処理
                    Console.WriteLine(fl.FullName);
                    while (・・・)
                    {
                        //--- 1行毎に処理
                        ID++;
                    }
                }
            }

引用返信 編集キー/
■59752 / inTopicNo.5)  Re[3]: listBoxに入れたファイルの読み込み
□投稿者/ Haru (8回)-(2011/06/06(Mon) 14:23:30)
2011/06/06(Mon) 14:24:42 編集(投稿者)
επιστημηさんのを参考に、リストボックスにファイル名を入れるのはできました。

次に、そのリストボックスに入れたファイルのデータを1行ずつ読込み、カンマ(,)ではさまれた文字列を変数に入れていきたいです。(例:あああ,いいいい,うう なら、 a←あああ みたいに)
一応、いろいろ調べ下記のように組んでみました。アドバイスをお願いします。
また、★がある行の "ファイル名.csv" にどのように入れていいのかわかりません。教えてください。
ド素人なもので、たぶん順番などはぐちゃぐちゃだとは思いますが、その辺も指摘をお願いします。

 int L_Count = listBox1.Items.Count;
            int id_Count=0;
            string line = "";          
            StreamReader sr = new StreamReader(listBox1.Text, Encoding.Default);
            
            if (File.Exists(listBox1.Text))
            {
        //csvファイルを取り込む
                 Microsoft.VisualBasic.FileIO.TextFieldParser txtParser = 
                        new Microsoft.VisualBasic.FileIO.TextFieldParser("ファイル名.csv",System.Text.Encoding.GetEncoding("shift_jis"));  ←★
                //区切り文字形式
                 txtParser.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited;
                 txtParser.SetDelimiters(",");
        
                //ListBox 選択されているすべての項目を取得する
                for (int j = 0; j< listBox1.SelectedItems.Count; j++)
                {
                       while ((line = sr.ReadLine()) != null) //csvファイルを一行づつ読み込む
                    {
                        変数へ格納する処理

            }               

                }

                
           }

引用返信 編集キー/
■59753 / inTopicNo.6)  Re[4]: listBoxに入れたファイルの読み込み
□投稿者/ ヴァン (82回)-(2011/06/06(Mon) 14:45:53)
こんにちは。

もう少し処理の流れをきちんと考えましょう。
機能ごとに処理を分けた方が楽です。

listBox1 の Items にファイルパスがすでにあるとして、

for(listBox1の選択分){
var filename = listBox1.SelectedItems[j];
CSV読み込み処理(filename);
}



CSV読み込み処理(string ファイルパス){
if(ファイルありますか?) {
for(行数分読み込むよ) {
変数へ格納する処理
}
}
}


No59752 (Haru さん) に返信
> 2011/06/06(Mon) 14:24:42 編集(投稿者)
>
> επιστημηさんのを参考に、リストボックスにファイル名を入れるのはできました。
>
> 次に、そのリストボックスに入れたファイルのデータを1行ずつ読込み、カンマ(,)ではさまれた文字列を変数に入れていきたいです。(例:あああ,いいいい,うう なら、 a←あああ みたいに)
> 一応、いろいろ調べ下記のように組んでみました。アドバイスをお願いします。
> また、★がある行の "ファイル名.csv" にどのように入れていいのかわかりません。教えてください。
> ド素人なもので、たぶん順番などはぐちゃぐちゃだとは思いますが、その辺も指摘をお願いします。
>
> int L_Count = listBox1.Items.Count;
> int id_Count=0;
> string line = "";
> StreamReader sr = new StreamReader(listBox1.Text, Encoding.Default);
>
> if (File.Exists(listBox1.Text))
> {
>         //csvファイルを取り込む
> Microsoft.VisualBasic.FileIO.TextFieldParser txtParser =
> new Microsoft.VisualBasic.FileIO.TextFieldParser("ファイル名.csv",System.Text.Encoding.GetEncoding("shift_jis"));  ←★
> //区切り文字形式
> txtParser.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited;
> txtParser.SetDelimiters(",");
>         
> //ListBox 選択されているすべての項目を取得する
> for (int j = 0; j< listBox1.SelectedItems.Count; j++)
> {
> while ((line = sr.ReadLine()) != null) //csvファイルを一行づつ読み込む
>     {
>     変数へ格納する処理
>
>             }
>
> }
>
>
> }
引用返信 編集キー/
■59754 / inTopicNo.7)  Re[4]: listBoxに入れたファイルの読み込み
□投稿者/ shu (757回)-(2011/06/06(Mon) 15:02:41)
2011/06/06(Mon) 15:20:42 編集(投稿者)

No59752 (Haru さん) に返信

> また、★がある行の "ファイル名.csv" にどのように入れていいのかわかりません。教えてください。
"ファイル名.CSV"の代わりに
(string)listBox1.Items[0]
等とすれば出来ますが、そういうことを聞いていますか?
引用返信 編集キー/
■59783 / inTopicNo.8)  Re[5]: listBoxに入れたファイルの読み込み
□投稿者/ Haru (9回)-(2011/06/07(Tue) 10:36:50)
ヴァンさんのを参考にし
// カンマ区切りで分割して配列に格納する
string[] Array = stCsvData.Split(',');
を使い、変数に格納していきました。

また、
> また、★がある行の "ファイル名.csv" にどのように入れていいのかわかりません。教えてください。
のところには、filenameを入れました。


みなさんありがとうございました。無事解決しました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -