datagridview导出为EXCEL出现索引超出了数组界限异常

interxyx 2007-09-28 02:54:28
private void button13_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "导出Excel文件到";

saveFileDialog.ShowDialog();

Stream myStream;
myStream = saveFileDialog.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
string str = "";
try
{
//写标题
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
if (i > 0)
{
str += "\t";
}
str += dataGridView1.Columns[i].HeaderText;
}

sw.WriteLine(str);
//写内容
for (int j = 0; j < dataGridView1.Rows.Count; j++)
{
string tempStr = "";
for (int k = 0; k < dataGridView1.Columns.Count; k++)
{
if (k > 0)
{
tempStr += "\t";
}
tempStr += dataGridView1.Rows[j].Cells[k].Value.ToString();
}
sw.WriteLine(tempStr);
}
sw.Close();
myStream.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
这是个导出EXCEL的按钮,在弹出的保存对话框中,如果点击保存的话,没有问题,可以正常保存,可是如果点击取消的话,就会出现“索引超出了数组界限”这个异常,怎么回事?
...全文
414 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
九章落地 2007-09-30
  • 打赏
  • 举报
回复
问题出在这里: myStream = saveFileDialog.OpenFile();

楼主如果您按了取消,OpenFile()取不到值,自然会出错

一种方法是通过IF来判断返回值:

if(saveFileDialog.ShowDialog()==DialogResult.OK)
{
Stream myStream;
……
}


另一种方法是,楼主您直接把try放到 Stream myStream; 前面
panzi667 2007-09-29
  • 打赏
  • 举报
回复
沙发,友情UP

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧