现在我遇到需要将dataGridView数据存到EXCEL中,在网络上看了很多代码 ,也查了很多书籍,都有
Excel.Application excel = new Excel.Application();
但是为什么我调试时候老提示Excel.Application为抽象类或接口,无法创建实例.
为什么网上的原代码都是要创建这个实例,书上也是这样写的,但是我调试就不行呢?项目添加引用,我也添了,其它还有什么地方不对吗?

解决方案 »

  1.   

     public void DataToExcel(System.Windows.Forms.DataGridView m_DataView)
            {            
    SaveFileDialog kk = new SaveFileDialog();
                kk.Title = "保存EXECL文件";
                kk.Filter = "EXECL文件|*.*|xls文件|*.xls|所有文件|*.*";
                kk.FilterIndex = 1;
                if (kk.ShowDialog() == DialogResult.OK)
                {
                    string FileName = kk.FileName + ".xls";
                    FileStream objFileStream;
                    StreamWriter objStreamWriter;
                    string strLine = "";
                    objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
                    objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode);
                    //strLine = "流水号" + Convert.ToChar(9);
                    for (int i = 0; i < m_DataView.Columns.Count; i++)
                    {
                        if (m_DataView.Columns[i].Visible == true)
                        {
                            strLine = strLine + m_DataView.Columns[i].HeaderText.ToString() + Convert.ToChar(9);
                        }
                    }
                    objStreamWriter.WriteLine(strLine);
                    strLine = "";                for (int i = 0; i < m_DataView.Rows.Count; i++)
                    {
                        if (m_DataView.Columns[0].Visible == true)
                        {
                            if (m_DataView.Rows[i].Cells[0].Value == null)
                                strLine = strLine + " " + Convert.ToChar(9);
                            else
                                strLine = strLine + m_DataView.Rows[i].Cells[0].Value.ToString() + Convert.ToChar(9);
                        }
                        for (int j = 1; j < m_DataView.Columns.Count; j++)
                        {
                            if (m_DataView.Columns[j].Visible == true)
                            {
                                if (m_DataView.Rows[i].Cells[j].Value == null)
                                    strLine = strLine + " " + Convert.ToChar(9);
                                else
                                {
                                    string rowstr = "";
                                    rowstr = m_DataView.Rows[i].Cells[j].Value.ToString();
                                    if (rowstr.IndexOf("\r\n") > 0)
                                        rowstr = rowstr.Replace("\r\n", " ");
                                    if (rowstr.IndexOf("\t") > 0)
                                        rowstr = rowstr.Replace("\t", " ");
                                    strLine = strLine + rowstr + Convert.ToChar(9);
                                }
                            }
                        }
                        objStreamWriter.WriteLine(strLine);
                        strLine = "";
                    }
                    objStreamWriter.Close();
                    objFileStream.Close();
                    MessageBox.Show("保存EXCEL成功");
                }
                else
                {
                    MessageBox.Show("保存EXCEL失败"); ;
                }
    }
      

  2.   

    大哥,你帮了小弟大忙了,终于搞起了!网上好多代码都不行,就你的行!
    我刚试了下 另外一个网上找的!
     public void DataToExcel(System.Windows.Forms.DataGridView m_DataView)
            {
                SaveFileDialog kk = new SaveFileDialog();
                kk.Title = "保存EXECL文件";
                kk.Filter = "Execl files (*.xls)|*.xls";
                kk.FilterIndex = 1;
                if (kk.ShowDialog() == DialogResult.OK)
                {
                    string FileName = kk.FileName + ".xls";
                    FileStream objFileStream;
                    StreamWriter objStreamWriter;
                    string strLine = "";
                    objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
                    objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode);
                    //strLine   =   "流水号"   +   Convert.ToChar(9); 
                    for (int i = 0; i < m_DataView.Columns.Count; i++)
                    {
                        if (m_DataView.Columns[i].Visible == true)
                        {
                            strLine = strLine + m_DataView.Columns[i].HeaderText.ToString() + Convert.ToChar(9);
                        }
                    }
                    objStreamWriter.WriteLine(strLine);
                    strLine = "";                for (int i = 0; i < m_DataView.Rows.Count; i++)
                    {
                        if (m_DataView.Columns[0].Visible == true)
                        {
                            if (m_DataView.Rows[i].Cells[0].Value == null)
                                strLine = strLine + "   " + Convert.ToChar(9);
                            else
                                strLine = strLine + m_DataView.Rows[i].Cells[0].Value.ToString() + Convert.ToChar(9);
                        }
                        for (int j = 1; j < m_DataView.Columns.Count; j++)
                        {
                            if (m_DataView.Columns[j].Visible == true)
                            {
                                if (m_DataView.Rows[i].Cells[j].Value == null)
                                    strLine = strLine + "   " + Convert.ToChar(9);
                                else
                                {
                                    string rowstr = "";
                                    rowstr = m_DataView.Rows[i].Cells[j].Value.ToString();
                                    if (rowstr.IndexOf("\r\n") > 0)
                                        rowstr = rowstr.Replace("\r\n", "   ");
                                    if (rowstr.IndexOf("\t") > 0)
                                        rowstr = rowstr.Replace("\t", "   ");
                                    strLine = strLine + rowstr + Convert.ToChar(9);
                                }
                            }
                        }
                        objStreamWriter.WriteLine(strLine);
                        strLine = "";
                    }
                    objStreamWriter.Close();
                    objFileStream.Close();
                    MessageBox.Show("保存EXCEL成功");
                }
                else
                {
                    MessageBox.Show("保存EXCEL失败"); ;
                }
            }
    结果也有点错,只能写进表头,不能写数据.你的完全可以用!