求教:
   如何将我整个Form的控件导出Excel,整个Form里包含了很多Lable与TextBox控件,如何简便的导出?求解

解决方案 »

  1.   

    遍历form,如果控件中还有控件,就写个递归
      

  2.   

    截图怎么发上来啊,就是一个winform里面有很多textbox,lable,Combox控件,我想把这个FORM里所有的控件通过一个BUTTON按钮,点击一下就可以将这些控件名称全部导出至EXCEL表保存了
      

  3.   

    http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/76315541-61a0-4b63-8d97-446adee827b5我在微软论坛上也有发帖,上面有截图,各位大大请帮忙看看
      

  4.   


    List<string> str = new List<string>();
            private string [] getControls(Control control)
            {
                if (control.Controls.Count > 0)
                {
                    foreach (Control cl in control.Controls)
                    {
                        str.Add(cl.Name);
                        getControls(cl);
                    }
                }
                return str.ToArray();
            }抛砖引玉
      

  5.   

    导入ExcelSystem.Reflection.Missing miss = System.Reflection.Missing.Value;
    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
                                excel.Application.Workbooks.Add(true); ;
                                excel.Visible = false;//若是true,则在导出的时候会显示Excel界面。
                                if (excel == null)
                                {
                                    MessageBox.Show("EXCEL无法启动!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    return;
                                }
                                //com对象实例化
                                Microsoft.Office.Interop.Excel.Workbooks books = (Microsoft.Office.Interop.Excel.Workbooks)excel.Workbooks;
                                Microsoft.Office.Interop.Excel.Workbook book = (Microsoft.Office.Interop.Excel.Workbook)(books.Add(miss));
                                Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet;
                                sheet.Name = "控件列表";
     SaveFileDialog saveFileDialog = new SaveFileDialog();
     saveFileDialog.Filter = "*.xlsx|*.xlsx";
     if (saveFileDialog.ShowDialog() == DialogResult.OK)
     {
    for (int i = 1; i <= str.Length; i++)
    {
         excel.Cells[1, i] = str[i - 1];
    }
    }
     sheet.SaveAs(saveFileDialog.FileName, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);
                                book.Close(false, miss, miss);
                                books.Close();
                                excel.Quit();
                                System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);//释放com对象
                                System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
                                System.Runtime.InteropServices.Marshal.ReleaseComObject(books);
                                System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
      

  6.   

    for (int i = 1; i <= str.Length; i++)
    {
         excel.Cells[i, 1] = str[i - 1];
    }
    //换成列
      

  7.   

    str.length报错,并没有该参数的定义    for (int i = 1; i <= str.length; i++)
                    {
                        excel.Cells[i, 1] = str[i - 1];
                    }
                }
      

  8.   

    错误 1 “System.Collections.Generic.List<string>”不包含“length”的定义,并且找不到可接受类型为“System.Collections.Generic.List<string>”的第一个参数的扩展方法“length”(是否缺少 using 指令或程序集引用?) D:\我的文档\Visual Studio 2008\Projects\采购包材单价\采购包材单价\Form3.cs 1786 42 采购包材单价
      

  9.   

    这孩子 真老实 给你啥你就照抄str 是字符串数组
      

  10.   

    你把List<string>str 转成数组
      

  11.   

    还是报错:错误 1 运算符“<=”无法应用于“int”和“string[]”类型的操作数 D:\我的文档\Visual Studio 2008\Projects\采购包材单价\采购包材单价\Form3.cs 1800 33 采购包材单价
     List<string> str = new List<string>();
            private string[] getControls(Control control)
            {
                if (control.Controls.Count > 0)
                {
                    foreach (Control cl in control.Controls)
                    {
                        str.Add(cl.Name);
                        getControls(cl);
                    }
                }
                return str.ToArray();
            }        private void button2_Click(object sender, EventArgs e)
            {
                System.Reflection.Missing miss = System.Reflection.Missing.Value;
                Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
                excel.Application.Workbooks.Add(true); ;
                excel.Visible = false;//若是true,则在导出的时候会显示Excel界面。
                if (excel == null)
                {
                    MessageBox.Show("EXCEL无法启动!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                //com对象实例化
                Microsoft.Office.Interop.Excel.Workbooks books = (Microsoft.Office.Interop.Excel.Workbooks)excel.Workbooks;
                Microsoft.Office.Interop.Excel.Workbook book = (Microsoft.Office.Interop.Excel.Workbook)(books.Add(miss));
                Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet;
                sheet.Name = "控件列表";
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "*.xlsx|*.xlsx";
                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    for (int i = 1; i <= str.ToArray(); i++)
                    {
                        excel.Cells[i, 1] = str[i - 1];
                    }
                }
                sheet.SaveAs(saveFileDialog.FileName, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);
                book.Close(false, miss, miss);
                books.Close();
                excel.Quit();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);//释放com对象
                System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(books);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);        }
      

  12.   

    啊 你杀了我吧 
    踢你一脚你动一下!你那数字跟数组比较   for (int i = 1; i <= str.ToArray(); i++)
                    {
                        excel.Cells[i, 1] = str[i - 1];
                    }
    str.ToArray().Length
    或者 str.Count
      

  13.   

    导出来的excel表一片空白啊,21楼的大大
      

  14.   

    http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/76315541-61a0-4b63-8d97-446adee827b5微软论坛上面有WINFORM画面,上面有很多控件,导出来后的excel表一片空白
      

  15.   

    给你方法 getControls (Control control)不是让你看的 你不调用str当然是空的
            
    在你的private void button2_Click(object sender, EventArgs e)
    里加一句  getControls(this);
      

  16.   

    鉴于你是新手 还是把话说明白点吧 把这据加在
    System.Reflection.Missing miss = System.Reflection.Missing.Value;
                Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
                excel.Application.Workbooks.Add(true); ;
                excel.Visible = false;//若是true,则在导出的时候会显示Excel界面。
                if (excel == null)
    前面
      

  17.   

    导出来全部是控件的名称,比如BUTTON,导出来就是BUTTON1,而不是它的显示名称“如导出EXCEL”,晕倒,而且都是放在一列里面的,要是能放在不同的列就好了
      

  18.   

    要是只导出控件名的话,那就递归+判断
    button的放一列,textbox的放一列……
      

  19.   

    这个超出你水平范围了,建议交给别人做吧 str.Add(cl.Name);改成str.Add(cl.Text);