C#将ListBox数据导出到Excel中

来源:互联网 发布:java orm框架性能比较 编辑:程序博客网 时间:2024/05/03 06:01

注: lstboxNoOK 是ListBox控件的名称

       TifFile 是一个实体类

 /// <summary>
        /// 导出不合格数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOutNumber_Click(object sender, EventArgs e)
        {
            if (this.lstboxNoOk.Items.Count == 0)
            {
                MessageBox.Show("没有数据可导出!");
                return;
            }
            else
            {
                SaveFileDialog save = new SaveFileDialog();
                save.Filter = "Excel files(*.xls)|*.xls";
                save.FilterIndex = 0;                           //获取当前文件框的索引
                save.RestoreDirectory = true;                   //设置一个值,该值只是在对话框关闭前是否还原当前目录
                save.CreatePrompt = true;                       //如果保存的文件在此目录中不存在是否创建该文件
                save.Title = "导出文件保存路径";                //文件标题
                save.ShowDialog();
                string strname = save.FileName;
                TifFile tf = new TifFile () ;
                try
                {
                    if (strname.Length != 0)
                    {
                        System.Reflection.Missing miss = System.Reflection.Missing.Value;
                        Excel.Application excel = new Excel.ApplicationClass();//建立Excel对象//建立Excel对象
                        excel.Workbooks.Add(true); //Excel表为添加状态
                        if (excel == null)
                        {
                            MessageBox.Show("没有找到Excel!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                        Excel.Workbooks books = excel.Workbooks;
                        Excel.Workbook book = books.Add(miss);
                        int cellcount = this.lstboxNoOk.Items.Count;
                        Excel._Worksheet sheet = (Excel._Worksheet)book.ActiveSheet;
                        for (int i=0; i < cellcount; i++)
                        {
                            tf = (TifFile)lstboxNoOk.Items[i];
                            sheet.Cells[i+1, 1] = tf.FileName;
                        }
                        sheet.SaveAs(strname, miss, miss, miss, miss, miss, Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);
                        book.Close(false, miss, miss);
                        excel.Quit();
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(books);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
                        GC.Collect(); //强执对所有代码进行垃圾回收
                        // MessageBox.Show("数据已经成功导出!!");
                        System.Diagnostics.Process.Start(strname);  //关联进程
                    }
                }
                catch
                {
                    //MessageBox.Show(ex.Message);

                    MessageBox.Show("Excel无法启动!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

            }
        }

原创粉丝点击