C#中怎么从如何将DataGridView中的数据导出到Excel中(WINFORM中,不是在WEB)
如题~C#中怎么从如何将DataGridView中的数据导出到Excel中(WINFORM中,不是在WEB)
在网上找了好久都没有找到,有的只是在WEB里面实现,而我是想在WINFORM下实现的,不过连了MSDN的例子都运行不了,参照下面的文章做了,还是不行,最后把Microsoft.Office.Interop.Excel这个DLL都加进项目都不行,实在没有办法了,望那位高手指教一下~
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_vsto2003_ta/html/ExcelObj.asp
http://www.programfan.com/club/showtxt.asp?id=94237
问题点数:20、回复次数:7Top
1 楼lidong6(立冬)回复于 2006-03-04 11:18:00 得分 0
不管是winform还是web都一样.
都是通过datagrid的数据源DataTable来导出的.也就是Datatable->excel.
Top
2 楼linqingfeng(清风)回复于 2006-03-04 13:22:04 得分 0
先谢谢楼上的回答~
但我实验过就是不一样,在WEB里面的方法在WINFORM中不管用,所以才发此贴~
还有我现在想知道的是DataGridView(2.0的控件)实现的方法
另外还有正如我所说的连Microsoft.Office.Interop.Excel这个DLL都加进项目都不行,连打开EXCEL也不行,请会的朋友再指点一下我这个菜鸟~谢谢Top
3 楼kingdhy(飞鹰)回复于 2006-03-04 13:43:59 得分 0
private void menuItem16_Click(object sender, System.EventArgs e)
{
ds.Tables["CurrentTable"].AcceptChanges();
this.Cursor=Cursors.WaitCursor;
Excel.Application myExcel=new Excel.Application();
myExcel.Application.Workbooks.Add(true);
myExcel.Visible=true;
myExcel.Cells[1,1]=this.dataGrid1.CaptionText;
//Object Date[ds.Tables["CurrentTable"].Rows.Count][ds.Tables["CurrentTable"].Columns.Count];
//生成标题
for(int i=0;i<ds.Tables["CurrentTable"].Columns.Count;i++)
{
myExcel.Cells[2,i+1]=ds.Tables["CurrentTable"].Columns[i].Caption;
}
//填充数据
for(int i=0;i<ds.Tables["CurrentTable"].Rows.Count;i++)
{
for(int j=0;j<ds.Tables["CurrentTable"].Columns.Count;j++)
{
if(ds.Tables["CurrentTable"].Rows[i][j].GetType()==typeof(System.String))
{
myExcel.Cells[i+3,j+1]="'"+ds.Tables["CurrentTable"].Rows[i][j].ToString();
}
else
{
myExcel.Cells[i+3,j+1]=ds.Tables["CurrentTable"].Rows[i][j].ToString();
}
}
}
this.Cursor=Cursors.Default;
MessageBox.Show("导出成功! ","恭喜",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);
}Top
4 楼linqingfeng(清风)回复于 2006-03-04 14:06:31 得分 0
谢谢楼上的代码说明,其实在MSDN上我也看到过类似的,但就有一个问题
Excel.Application这个用什么引用啊,我把Microsoft.Office.Interop.Excel加上也不行,望再赐教~Top
5 楼kingdhy(飞鹰)回复于 2006-03-04 15:21:13 得分 0
就是编译你本地机器上的Excel.exe文件,(据说用这个文件编译成DLL文件后可在2K,XP,2003等系统上通用,如果是编译Excel9.olb则不同的系统要出错,还未试)。用TlbImp.exe excel.exe编译后即生成exdel.dll,然后拷贝你的应用程序文件夹,再添加“引用”,参照上面这段代码即可完成。其中TibImp.exe可在你本同上搜索得到!Top
6 楼kingdhy(飞鹰)回复于 2006-03-04 15:26:41 得分 20
建议参考:http://community.csdn.net/Expert/TopicView.asp?id=4570895这个帖子,已经说得很详细了!Top
7 楼linqingfeng(清风)回复于 2006-03-04 20:22:07 得分 0
谢谢!!!总于搞定了~~太高兴了!!
谢谢^^Top




