在我的应用程序中,用户可以从datagridview导出和导出csv文件,这样可以正常工作,但是存在一些小问题。
如您所知,csv文件使用逗号来分隔项目。
有时其中一个单元格有一个逗号,例如(2.5小时)。
导入csv时,它认为2,5之间的逗号符号是一个分隔符,因此它会在一个单元格中放置2,在下一个单元格中放置5个。
我该如何解决这个问题。
这是我导入csv的
的csvdataGridView1.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 :(得分:4)
尝试使用分号分隔符或带逗号(“,”)的引号:
fileRow = fileReader.ReadLine();
fileDataField = fileRow.Replace("\",\"", "\r").Split('\r');
dataGridView1.Rows.Add(fileDataField);
答案 1 :(得分:2)
您可以使用逗号以外的其他字符来分隔变量,也可以将值括在引号中。
查看this。