Я работаю над приложением, которое будет экспортировать мой DataGridView под названием scannerDataGridView в файл csv.Экспорт datagridview в файл csv
Нашел код примера, чтобы сделать это, но не может заставить его работать. Btw my datagrid не привязан к источнику данных.
Когда я пытаюсь использовать Streamwriter только для записи заголовков столбцов, все идет хорошо, но когда я пытаюсь экспортировать весь файл данных, включая данные, я получаю exeption trhown.
System.NullReferenceException: Object reference not set to an instance of an object. at Scanmonitor.Form1.button1_Click(Object sender, EventArgs e)
Вот мой код, ошибка дается на следующей строке:
dataFromGrid = dataFromGrid + ',' + dataRowObject.Cells[i].Value.ToString();
//csvFileWriter = StreamWriter
//scannerDataGridView = DataGridView
private void button1_Click(object sender, EventArgs e)
{
string CsvFpath = @"C:\scanner\CSV-EXPORT.csv";
try
{
System.IO.StreamWriter csvFileWriter = new StreamWriter(CsvFpath, false);
string columnHeaderText = "";
int countColumn = scannerDataGridView.ColumnCount - 1;
if (countColumn >= 0)
{
columnHeaderText = scannerDataGridView.Columns[0].HeaderText;
}
for (int i = 1; i <= countColumn; i++)
{
columnHeaderText = columnHeaderText + ',' + scannerDataGridView.Columns[i].HeaderText;
}
csvFileWriter.WriteLine(columnHeaderText);
foreach (DataGridViewRow dataRowObject in scannerDataGridView.Rows)
{
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();
csvFileWriter.WriteLine(dataFromGrid);
}
}
}
csvFileWriter.Flush();
csvFileWriter.Close();
}
catch (Exception exceptionObject)
{
MessageBox.Show(exceptionObject.ToString());
}
На какой линии выбрасывается исключение? Также вы можете использовать foreach для прохождения столбцов каждой строки: foreach (ячейка DataGridViewCell в dataRowObject.Cells), если только не существует конкретной причины, по которой вы предпочитаете нормальный цикл? – Dan
Также, возможно, проверьте, что scannerDataGridView.Rows.Count> 0 – Dan
Привет, PandaNL, я удалил свой ответ. Я по-прежнему считаю, что строка offsending должна читать 'object value = dataRowObject.Cells [i] .Value; dataFromGrid = dataFromGrid + ',' + (значение? String.Empty) .ToString()); ' –