如何将我整个Form的控件导出Excel 求教: 如何将我整个Form的控件导出Excel,整个Form里包含了很多Lable与TextBox控件,如何简便的导出?求解 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 遍历form,如果控件中还有控件,就写个递归 截图怎么发上来啊,就是一个winform里面有很多textbox,lable,Combox控件,我想把这个FORM里所有的控件通过一个BUTTON按钮,点击一下就可以将这些控件名称全部导出至EXCEL表保存了 http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/76315541-61a0-4b63-8d97-446adee827b5我在微软论坛上也有发帖,上面有截图,各位大大请帮忙看看 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(); }抛砖引玉 导入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); for (int i = 1; i <= str.Length; i++){ excel.Cells[i, 1] = str[i - 1];}//换成列 str.length报错,并没有该参数的定义 for (int i = 1; i <= str.length; i++) { excel.Cells[i, 1] = str[i - 1]; } } 错误 1 “System.Collections.Generic.List<string>”不包含“length”的定义,并且找不到可接受类型为“System.Collections.Generic.List<string>”的第一个参数的扩展方法“length”(是否缺少 using 指令或程序集引用?) D:\我的文档\Visual Studio 2008\Projects\采购包材单价\采购包材单价\Form3.cs 1786 42 采购包材单价 这孩子 真老实 给你啥你就照抄str 是字符串数组 你把List<string>str 转成数组 还是报错:错误 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); } 啊 你杀了我吧 踢你一脚你动一下!你那数字跟数组比较 for (int i = 1; i <= str.ToArray(); i++) { excel.Cells[i, 1] = str[i - 1]; }str.ToArray().Length或者 str.Count 导出来的excel表一片空白啊,21楼的大大 http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/76315541-61a0-4b63-8d97-446adee827b5微软论坛上面有WINFORM画面,上面有很多控件,导出来后的excel表一片空白 给你方法 getControls (Control control)不是让你看的 你不调用str当然是空的 在你的private void button2_Click(object sender, EventArgs e)里加一句 getControls(this); 鉴于你是新手 还是把话说明白点吧 把这据加在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)前面 导出来全部是控件的名称,比如BUTTON,导出来就是BUTTON1,而不是它的显示名称“如导出EXCEL”,晕倒,而且都是放在一列里面的,要是能放在不同的列就好了 要是只导出控件名的话,那就递归+判断button的放一列,textbox的放一列…… 这个超出你水平范围了,建议交给别人做吧 str.Add(cl.Name);改成str.Add(cl.Text); 请问,如何取消checkedListBox的所有项的勾选状态 抓取百度数据时的问题 c#.net里面如何调用c++.net编译的dll里的静态方法? 控件属性绑定指定到类属性问题 winform程序中如何显示HTML格式化后的文本,而不是html源代码 自定义控件中使用ToolStripProfessionalRenderer 是啥作用? 请问C# 和 C#BUILDER 有什么区别吗? 求浏览器辨别代码 在C#里面模糊查询 用C#写了个TreeView控件的小例子,请大家批评 c# winForm 求助:要写一个编号,编号格式如:OA_110_12_0001号
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();
}抛砖引玉
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);
{
excel.Cells[i, 1] = str[i - 1];
}
//换成列
{
excel.Cells[i, 1] = str[i - 1];
}
}
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); }
踢你一脚你动一下!你那数字跟数组比较 for (int i = 1; i <= str.ToArray(); i++)
{
excel.Cells[i, 1] = str[i - 1];
}
str.ToArray().Length
或者 str.Count
在你的private void button2_Click(object sender, EventArgs e)
里加一句 getControls(this);
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)
前面
button的放一列,textbox的放一列……