winform 中的panl内有datagridview 及一些lable ,请教如何实现将整个panl的数据导出到EXCEL中?

解决方案 »

  1.   

    datagid里面的数据导出到EXCEL还差不多,
    你还想讲label 也导出到EXCEL 不会期待~~~~
      

  2.   

    这个确实得学习下,主要思想是安装EXCEL,然后再添加office的Office.Interop.Excel引用,在代码里面要USING下,然后就能操作了,新建EXCEL文件,新建工作簿,对工作簿里面数据操作,等等在C#中循环写入就好了,大概思想就是这样,刚把VS卸了没法给你写了,具体代码你可以百度上搜下,挺多的,这个导出功能用的超多,而且要求也不只是导出这么简单,多学习,自己多敲敲,很有用。
      

  3.   

    class ExportByDataGridView
        {
            protected internal ExportByDataGridView(DataGridView DGV,ExcelExport excelExport)
            {
                this.dgv = DGV;
                this.excelExport = excelExport;
            }        [DllImport("user32.dll", CharSet = CharSet.Auto)]
            public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int id);        protected internal DataGridView dgv { get; set; }
            protected internal ExcelExport excelExport { get; set; }        private object m_objOpt = System.Reflection.Missing.Value;
            protected internal ExcelW.Application MyXls { get; set; }
            protected internal ExcelW.Workbook workbook { get; set; }        
            //导出
            protected internal void Export()
            {
                workbook = MyXls.Workbooks.Add(ExcelW.XlWBATemplate.xlWBATWorksheet);            ExcelW.Worksheet outBoxWorkSheet = (ExcelW.Worksheet)workbook.Worksheets[1];
                outBoxWorkSheet.Name = "sheet1";            //显示表头
                for (int i = 0; i < dgv.ColumnCount; i++)
                {
                    MyXls.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
                    this.excelExport.Value++;
                }
                //显示内容
                int outBoxCount = dgv.RowCount;
                for (int i = 0; i < outBoxCount; i++)
                {
                    //excelApp.Cells[i + 3, 1] = i + 0;                for (int j = 0; j < dgv.ColumnCount; j++)
                    {
                        if (dgv[j,i].Value != null)
                        {
                            if (dgv[j, i].Value.GetType() == typeof(string))
                            {
                                MyXls.Cells[i + 2, j + 1] = "'" + dgv[j, i].Value.ToString();
                            }
                            else
                            {
                                MyXls.Cells[i + 2, j + 1] = dgv[j,i].Value.ToString();
                            }
                        }
                        this.excelExport.Value++;
                    }
                }            workbook.SaveCopyAs(excelExport.filePath);
                if (excelExport.ShowAfterExport)
                    MyXls.Application.Visible = true;
                else
                {
                    try
                    {
                        if (MyXls != null)
                        {
                            IntPtr t = new IntPtr(MyXls.Hwnd);
                            int k = 0;
                            GetWindowThreadProcessId(t, out k);
                            System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
                            p.Kill();
                        }
                    }
                    catch
                    {
                    }
                }
            }
        }
    以上为DataGridView导出到Excel  仅供参考,如果要将label内容也导出到Excel就需要在导出的过程中进行修改了
      

  4.   

    自定义一个将DataGridView控件中数据导出到Excel函数   
    /// <summary>
      /// 将DataGridView控件中数据导出到Excel
      /// </summary>
      /// <param name="gridView">DataGridView对象</param>
      /// <param name="isShowExcle">是否显示Excel界面</param>
      /// <returns></returns>
      public bool ExportDataGridview(DataGridView gridView,bool isShowExcle)
      {
      if (gridView.Rows.Count == 0)
      return false;
      //建立Excel对象
      Excel.Application excel = new Excel.Application();
      excel.Application.Workbooks.Add(true);
      excel.Visible = isShowExcle;
      //生成字段名称
      for (int i = 0; i < gridView.ColumnCount; i++)
      {
      excel.Cells[1, i + 1] = gridView.Columns[i].HeaderText;
      }
      //填充数据
      for (int i = 0; i < gridView.RowCount-1; i++)
      {
      for (int j = 0; j < gridView.ColumnCount; j++)
      {
      if (gridView[j, i].ValueType == typeof(string))
      {
      excel.Cells[i + 2, j + 1] = "'" + gridView[j, i].Value.ToString();
      }
      else
      {
      excel.Cells[i + 2, j + 1] = gridView[j, i].Value.ToString();
      }
      }
      }
      return true;
      } 
      

  5.   

    foreach(Control c in this.panel1.Controls)
    {
     if(c is DataGridView){}
     if(c is Label){}
    }
    datagridview导出EXCEL
    http://topic.csdn.net/u/20100312/14/4159d5ec-43ad-4f41-bc73-9a97421eadc6.html
      

  6.   

    如果你的文本都是简单的字符串,你可以直接用tab字符分割列的形式写到一个文本文件,然后把那个文本文件的后缀写成.xls哈哈哈
      

  7.   

    C# WinForm开发系列 - Excel
      

  8.   

    如果都是文字,使用myxls
    如果还有别的,使用Com组件http://blog.bossma.cn/dotnet/csharp-exorpt-excel-process-kill/
    http://blog.bossma.cn/dotnet/myxls-export-excel/
      

  9.   

    给你一个将datagridview 数据导出excel的例子,不用引用什么Excel的,直接把StreamWriter转换为excel 文件
    private void DataGridViewToExcel(DataGridView dgv)
            {
                SaveFileDialog dlg = new SaveFileDialog();
                dlg.Filter = "Execl files (*.xls)|*.xls";
                dlg.FilterIndex = 0;
                dlg.RestoreDirectory = true;
                dlg.CreatePrompt = false;
                dlg.Title = "保存为Excel文件";
                dlg.FileName = this.comViewName.Text + DateTime.Now.ToString("yyMMddHHmmss");             if (dlg.ShowDialog() == DialogResult.OK)
                {
                    Stream myStream;
                    myStream = dlg.OpenFile();
                    StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
                    string columnTitle = "";
                    try
                    {
                        //写入列标题   
                        for (int i = 0; i < dgv.ColumnCount; i++)
                        {
                            if (i > 0)
                            {
                                columnTitle += "\t";
                            }
                            columnTitle += dgv.Columns[i].HeaderText;
                        }
                        sw.WriteLine(columnTitle);                    //写入列内容   
                        for (int j = 0; j < dgv.Rows.Count; j++)
                        {
                            string columnValue = "";
                            for (int k = 0; k < dgv.Columns.Count; k++)
                            {
                                if (k > 0)
                                {
                                    columnValue += "\t";
                                }
                                if (dgv.Rows[j].Cells[k].Value == null)
                                    columnValue += "";
                                else
                                    columnValue += dgv.Rows[j].Cells[k].Value.ToString().Trim();
                            }
                            sw.WriteLine(columnValue);
                        }
                        sw.Close();
                        myStream.Close();
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show(e.ToString());
                    }
                    finally
                    {
                        sw.Close();
                        myStream.Close();
                    }
                }
            } 
      

  10.   

    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
    DataSet ds= new DataSet();
    using(OleDbConnection OleConn = new OleDbConnection(strConn))
    {
      OleConn.Open();
      String sql = "SELECT * FROM [Sheet1$]";
      OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);  OleDaExcel.Fill(ds);
      OleConn.Close();
    }
    foreach(DataRow dr in ds.Tables[0].Rows)
    {
    //遍历Console.Write(dt[""].ToString()+"\n");
      

  11.   

    先把lable文本值添加到Excel中
    再遍历datagridview添加到Excel中去。Excel操作知识总集:http://www.cnblogs.com/peterzb/archive/2009/07/06/1517395.html
      

  12.   

            private void ExportFile()
            {
                try
                {
                    string filename = "";
                    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                    saveFileDialog1.Filter = "Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*";
                    saveFileDialog1.Title = "保存文件";                saveFileDialog1.FileName = this.Text + @".xls";
                    if ((saveFileDialog1.ShowDialog()) == DialogResult.OK)
                    {
                        filename = saveFileDialog1.FileName;
                        this.ultraGridExcelExporter1.Export(this.ultraGrid1, filename);
                        System.Diagnostics.ProcessStartInfo st = new System.Diagnostics.ProcessStartInfo(filename);
                        st.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized;
                        System.Diagnostics.Process.Start(st);
                        MessageBox.Show("数据导出成功!!!");
                    }
                    else
                    {
                        return;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    MessageBox.Show("数据导出出错!!!");
                }
                finally
                {
                    //ok
                }
            }