private void button11_Click(object sender, EventArgs e)
{
ExportDataGridview(dgv_Analysis, true);
} public bool ExportDataGridview(DataGridView dgv, bool isShowExcle)
{
try
{
if (dgv.Rows.Count == 0)
return false; Excel.Application excel = new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = isShowExcle; for (int i = 0; i < dgv.ColumnCount; i++)
{
excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
} for (int i = 0; i < dgv.RowCount - 1; i++)
{
for (int j = 0; j < dgv.ColumnCount; j++)
{
if (dgv[j, i].ValueType == typeof(string))
{
excel.Cells[i + 2, j + 1] = "'" + dgv[j, i].Value.ToString();
}
else
{
//这行报错
excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString(); //这行报错
}
} }
} catch
{ }
return true;
} //这是第二个范例也是同样的错误
public static string[,] ToStringArray(DataGridView dataGridView, bool includeColumnText)
{
#region 实现... string[,] arrReturn = null; int rowsCount = dataGridView.Rows.Count;
int colsCount = dataGridView.Columns.Count; if (rowsCount > 0)
{
//最后一行是供输入的行时,不用读数据。
if (dataGridView.Rows[rowsCount - 1].IsNewRow)
{
rowsCount--;
}
} int i = 0; //包括列标题
if (includeColumnText)
{
rowsCount++;
arrReturn = new string[rowsCount, colsCount];
for (i = 0; i < colsCount; i++)
{
arrReturn[0, i] = dataGridView.Columns[i].HeaderText;
} i = 1;
}
else
{
arrReturn = new string[rowsCount, colsCount];
} //读取单元格数据
int rowIndex = 0;
for (; i < rowsCount; i++, rowIndex++)
{
for (int j = 0; j < colsCount; j++)
{
//这行报错
arrReturn[i, j] = dataGridView.Rows[rowIndex].Cells[j].Value.ToString(); //这行报错
}
} return arrReturn; #endregion 实现
}未处理NullReferenceException
未将对象引用设置到对象的实例
arrReturn[i, j] = dataGridView.Rows[rowIndex].Cells[j].Value.ToString(); //这行报错你检查下dataGridView.Rows[rowIndex].Cells[j].Value是不是为Null
dataGridView.Rows[rowIndex].Cells[j].Value.ToString() == null.ToString() //空引用
//这行报错
excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString(); //这行报错请问是替换还是?????