0

csv を介して一連のクライアント情報をアップロードしようとしています。最初の段階でこれに問題がありましたが、以前の投稿に回答があったため、データの読み取りを開始できましたが、最初の行しか読み取れませんでした。誰かが何かアイデアを持っているかどうか疑問に思っています。以下のコードを含めました

    private void btnUpload_Click(object sender, EventArgs e)
    {
         //Browse for file
        OpenFileDialog ofd = new OpenFileDialog();
        //Only show .csv files
        ofd.Filter = "Microsoft Office Excel Comma Separated Values File|*.csv";
        DialogResult result = ofd.ShowDialog();

        //If the user selects a valid file 
        if (result == DialogResult.OK)
        {
            //File is delimited by a comma
            char[] laClientDelim = { ',' };

            //New object for string manipulation
            objStringManipulation = new StringManipulation();

            // Parse the csv file
            List<string[]> lsClientList = objStringManipulation.parseCSV(ofd.FileName, laClientDelim);

            foreach (string[] laClient in lsClientList)
            {
                //Create new object for manipulating the database
                objSqlCommands = new SqlCommands("Client", "ClientName");



                string[] records = File.ReadAllLines(ofd.FileName); // read the file completely line by line
                char splitChar = ',';
                int splitCharCount = 0;
                int k = 0;


                    string[] fields = records[k].Split(splitChar);  // reads all the single values per line. 'splitChar' should be the delimiter.
                    splitCharCount++;
                    if (splitCharCount >= 4 && splitCharCount <= 10)
                    {
                        var stuff = from l in File.ReadLines(ofd.FileName)
                                    let x = l.Split(new[] { ',', ' ' },  StringSplitOptions.RemoveEmptyEntries)
                                              .Skip(1)
                                             .Select(s => char.Parse(s))
                                    select new
                                    {
                                        Client = x,
                                        ClientName = x
                                    };
                    }


                    //Inserts the client info into datbase
                objSqlCommands.sqlCommandInsertorUpdate("INSERT", records[k]);//laClient[0]);
                k++;
                    //Refreshs the Client table on display from the 
                    this.clientTableAdapter.Fill(this.kIIDImplementationCalcDataSet.Client);

                    //MAKE SURE TO ONLY ADD IN CLIENT AND CLIENT NAME 
                    //update the view 
                    dgvClientlst.Update() ; 





            }

        }
    }
4

3 に答える 3

0

Jonesy の回答を拡張して (まだコメントできないため)、kループの外側で変数を宣言します。毎回ゼロにリセットされています。

int k = 0;
foreach (string[] laClient in lsClientList)
{
    string[] records = File.ReadAllLines(ofd.FileName);

    string[] fields = records[k].Split(splitChar);
    k++;
}
于 2013-08-02T13:57:15.630 に答える
0

私の答えがあなたが探しているものではないことはわかっていますが、.csv ファイルを .xls ファイルに変換すると、非常に簡単に操作できます。私は何度もこれを行ってきました。必要に応じて、コード付きの手順を提供できます。

于 2013-08-02T13:55:15.277 に答える