2012-10-22 132 views
1

可能重复:
Very simple C# CSV readerC#导入CSV文件

在我的应用程序,用户可以从和一个DataGridView,这个工作好出口和CSV文件,但有一些小问题。

正如您所知,csv文件使用逗号来标记项目。

有时其中一个单元格有逗号(例如2,5个小时)。

当导入csv时,它认为2,5之间的逗号符号是分隔符,因此它会将2放入单元格中,并将5放入下一个单元格中。

我该如何解决这个问题。

这是我导入CSV CSV的

dataGridView1.Rows.Clear(); 
     try 
      { 
       if (openFileCsv.ShowDialog() == DialogResult.OK) 
       { 
        string csvPath = openFileCsv.FileName; 

        if (System.IO.File.Exists(csvPath)) 
        { 
         System.IO.StreamReader fileReader = new System.IO.StreamReader(csvPath, false); 


         //Reading Data 
         while (fileReader.Peek() != -1) 
         { 
          fileRow = fileReader.ReadLine(); 
          fileDataField = fileRow.Split(','); 
          dataGridView1.Rows.Add(fileDataField); 
         } 
         fileReader.Dispose(); 
         fileReader.Close(); 
        } 
        else 
        { 
         MessageBox.Show("CSV Bestand niet gevonden."); 
        } 
       } 

       DataLoaded = true; 

      } 

这是我导出CSV代码。

if (saveFileCsv.ShowDialog() == DialogResult.OK) 
      { 
       string CsvFpath = saveFileCsv.FileName; 

       try 
       { 
       System.IO.StreamWriter csvFileWriter = new System.IO.StreamWriter(CsvFpath, false); 

      int countColumn = dataGridView1.ColumnCount - 1; 

      int iColCount = dataGridView1.Columns.Count; 

      foreach (DataGridViewRow dataRowObject in dataGridView1.Rows) 
      { 
       //Checking for New Row in DataGridView 
       if (!dataRowObject.IsNewRow) 
       { 
        string dataFromGrid = ""; 

        dataFromGrid = dataRowObject.Cells[0].Value.ToString(); 

        for (int i = 1; i <= countColumn; i++) 
        { 
         dataFromGrid = dataFromGrid + ',' + dataRowObject.Cells[i].Value.ToString(); 
        } 

        //Writing Data Rows in File 
        csvFileWriter.WriteLine(dataFromGrid); 
       } 
      } 


      csvFileWriter.Flush(); 
      csvFileWriter.Close(); 
     } 
     catch (Exception exceptionObject) 
     { 
      MessageBox.Show(exceptionObject.ToString()); 
     } 
+0

读csv文件引导到数据表中的,而不是通过读取filerow和拆分“”。 –

+0

我该怎么做? – PandaNL

回答

2

您可以使用除逗号之外的其他字符来分隔变量,也可以将值括在引号中。请参阅this

+0

完全忽略了这一点,作品完美。 – PandaNL

4

尝试使用分号分隔符,或引号用逗号(“”):

fileRow = fileReader.ReadLine(); 
fileDataField = fileRow.Replace("\",\"", "\r").Split('\r'); 
dataGridView1.Rows.Add(fileDataField);