导出excel

前言:参与了一个小项目,需要导出excel,写写这里面的收获。


内容:

话不多说直接上代码,不,还是要说一句,这个代码在网上查找并改的,因为自己后加的部分所以有一点的冗余,嘻嘻,不多说了看看大家发现了没有 ~ ~ !希望可以得到改正的意见。

  private void btnCheckOut_Click(object sender, EventArgs e)
        {
            if (txtHistory.Text == "没有想要的数据!")
            {
                MessageBox.Show("没有数据,不能导出");
            }
            else
            {
                #region 直接导出Excel
                SaveFileDialog sfd = new SaveFileDialog();
                sfd.DefaultExt = "xls";    //设置默认扩展名为xls
                sfd.Filter = "Excel文件(*.xls)|*.xls";//另存文件时文件类型框中出现的内容
                if (sfd.ShowDialog() == DialogResult.OK)  //获取选定的另存文件对话框存在
                {
                    DoExport(this.txtHistory, sfd.FileName);
                }
                #endregion
            }
        }
        //导出文本文件
        private void Importtxtfile()
        {
            SaveFileDialog saveFile1 = new SaveFileDialog();//导出文本文件
            saveFile1.Filter = "文本文件(.txt)|*.txt";
            saveFile1.FilterIndex = 1;
            if (saveFile1.ShowDialog() == System.Windows.Forms.DialogResult.OK && saveFile1.FileName.Length > 0)
            {
                System.IO.StreamWriter sw = new System.IO.StreamWriter(saveFile1.FileName, false);
                try
                {
                    sw.WriteLine(txtHistory.Text); //只要这里改一下要输出的内容就可以了
                }
                catch
                {
                    throw;
                }
                finally
                {
                    sw.Close();
                }
            }
        }
        //导出excel
        private void DoExport(RtfRichTextBox textbox, string strFileName)
        {
            // string[] lines = System.Text.RegularExpressions.Regex.Split(textbox.Text, "/r/n");
            //  int rowNum = lines.Length;//获取 TextBox2控件里的数据行数
            int rowNum = textbox.Lines.Length; //读取Textbox控件里数据的行数
            int rowIndex = 1;   //定义一个Excel行
            int col = 1;        //定义一个Excel列,默认为1
            if (rowNum == 0 || string.IsNullOrEmpty(strFileName)) //控件里没有数据
            {
                MessageBox.Show("没有数据,不能导出");
                return;
            }
            if (rowNum > 0)//控件里有数据
            {
                Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
                if (xlApp == null)
                {
                    MessageBox.Show("无法创建Excel对象,可能您的系统未安装Excel");
                    Importtxtfile();
                }

                xlApp.DefaultFilePath = "";//出现异常
                xlApp.DisplayAlerts = true;
                xlApp.SheetsInNewWorkbook = 1;
                Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
                for (int i = 0; i < rowNum; i++)//将数据导入Excel
                {
                    string ss = textbox.Lines[i].ToString();  //读取相对应行的数据,这里只是测试用
                    rowIndex++;
                    xlApp.Cells[rowIndex, col] = Convert.ToString(textbox.Lines[i].ToString()) + "\t";//读取到的Textbox控件里的数据导入到Excel
                                                                                                      //xlApp.Rows[rowIndex,0] = Convert.ToString(textbox.Lines[i].ToString()) + "\t";
                }
                xlBook.SaveAs(strFileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                xlApp = null;
                xlBook = null;
                MessageBox.Show("数据导出成功!!");
            }
        }

2.我遇到的问题

(1.)  未引用 引用的Microsoft.Office.Interop.Excel(程序集扩展)会提示错误,cs0234 他的属性中有一个嵌入互操作类型 值改为false

(2.) 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”。此操作失败的原因是对 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来自 HRESULT:0x80029C4A (TYPE_E_CANTLOADLIBRARY))。

这个错误需要恢复一下本机的office 。


总结:遇到问题的时候不要害怕检查具体问题是什么,多查解决的办法总会解决的。





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值