在DataGriD内的显示的数据不用在出报表的情况下导出.直接点击"导出"时导入到Excel库中
解决方案 »
- c# winForm 用oracleparameter传参数的问题
- List<T> 中的T能否动态生成
- 数量核对不上啊?我写错了么?(iisLog分析 用的LogParser,sql语句和Sqlserver差不多)
- 高人,请教 vs 2008 调试过程不能修改代码的问题,有图
- 重起电脑之后我的程序不能用了怎么办
- OleDb和OracleClient效率有多大差别?
- 一个继承关系的问题求助
- winform 打开网页关闭网页的问题
- 请教关于判断一个DateTime类型的字段值是否为空?
- 数据库提交问题,急呀,在线等候
- C#写控件时遇到的错误
- 通过Remoting接收的DataTable是否不能使用OracleCommandBuilder来更新?
最好自己写一个xml,这个玩意好用。
然后...
就可以调用Excel提供的接口了,但必须在安装了Excel的机器上才能够执行
DataTable dt = new DataTable();
dt=(DataTable)dataGrid1.DataSource;
outexcel(dt);
//////
void outexcel(DataTable dt)
{
if (dt.Columns.Count == 0) return;
Excel.Application excel = new Excel.ApplicationClass();
Excel.Workbooks workbooks = excel.Workbooks;
Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Sheets worksheets = workbook.Worksheets;
Excel.Worksheet sheet = (Excel.Worksheet) worksheets.get_Item(1);
excel.Visible = true;
Excel.Range range;
Object[,] asd=new object[dt.Rows.Count + 1,dt.Columns.Count + 1];
int i=0,j=0;
foreach(DataColumn dc in dt.Columns)
{
i++;
asd[0,i-1] = dc.ColumnName.ToString();
}
range = excel.get_Range("A1",Missing.Value);
range = range.get_Resize(dt.Rows.Count+1,dt.Columns.Count+1);
i=0;
foreach(DataRow dr in dt.Rows)
{
i++;
foreach(DataColumn dc in dt.Columns)
{
asd[i,j]=dr[dc].ToString().Trim();
j++;
}
j=0;
}
range.Value2 = asd;
excel.Quit();
}