当前位置:编程学习 > C#/ASP.NET >>

dataGridView导出到Excel出点问题

public void dataGridViewToExcel(DataGridView dgv)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
            saveFileDialog.FilterIndex = 0;
            saveFileDialog.RestoreDirectory = true;
            saveFileDialog.CreatePrompt = true;
            saveFileDialog.Title = "导出 Excel 文件到";
            if (saveFileDialog.ShowDialog() == DialogResult.Cancel)//如果选择提醒导出
            {
                return;
            }
            Stream myStream;
            myStream = saveFileDialog.OpenFile();

            StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
            string str = "";

            try
            {
                //写标题
                for (int i = 0; i < dgv.ColumnCount; i++)
                {
                    if (i > 0)
                    {
                        str += "\t";
                    }
                    str += dgv.Columns[i].HeaderText;
                }
                sw.WriteLine(str);

                //写内容
                for (int j = 0; j < dgv.Rows.Count; j++)
                {
                    string tempStr = "";
                    for (int k = 0; k < dgv.Columns.Count; k++)
                    {
                        if (k > 0)
                        {
                            tempStr += "\t";
                        }
                        tempStr += dgv.Rows[j].Cells[k].Value.ToString();//zzzz
                    }
                    sw.WriteLine(tempStr);
                }
                sw.Close();
                myStream.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            finally
            {
                sw.Close();
                myStream.Close();
            }
        }

执行完后,会曝出System.NullReferenceException:未将对象引用设置到对象的实例;行号为行后标有//zzzz的一行

--------------------编程问答-------------------- 应该是dgv.Rows[j].Cells[k].Value对象为null吧,这个时候在调用value的ToString方法,肯定会报“未将对象引用设置到对象的实例”的异常,报异常的时候,直接将当时的dgv.Rows[j].Cells[k].Value查看一下就知道了。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,