dataGrid里的数据怎样导出到Excel中去? dataGrid里的数据怎样导出到Excel中去?请高手指点一二 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 cn.Open ();SqlCommand ss=new SqlCommand ("select * from tablename ",cn);SqlDataReader myreader=ss.ExecuteReader();// //创建一个Excel文件 int i; object missing = System.Reflection.Missing.Value; Excel.Application myexcel = new Excel.Application ( ); myexcel.Application.Workbooks.Add ( true ); //让Excel文件可见 myexcel.Visible=true; //第一行为报表名称 myexcel.Cells[1,4]="情况"; myexcel.Cells[2,1]="单号"; myexcel.Cells[2,2]="台号"; myexcel.Cells[2,3]="菜名"; myexcel.Cells[2,4]="打折"; myexcel.Cells [2,5]="单价"; //时间太长有可能所见到是######,手动把格拉宽就可以了 //逐行写入数据, try { i=2; while (myreader.Read()) { i=i+1; myexcel.Cells[i,1]=myreader.GetInt32 (9); myexcel.Cells[i,2]=myreader.GetString(0); myexcel.Cells [i,3]=myreader.GetString (2); myexcel.Cells [i,4]=myreader.GetDecimal (3); } } finally { myreader.Close(); } /// <summary> /// 将DataSet里所有数据导入Excel. /// 需要添加COM: Microsoft Excel Object Library. /// using Excel; /// </summary> /// <param name="filePath"></param> /// <param name="ds"></param> public static void ExportToExcel(string filePath, DataSet ds) { object oMissing = System.Reflection.Missing.Value; Excel.ApplicationClass xlApp = new Excel.ApplicationClass(); try { // 打开Excel文件。以下为Office 2000. Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(filePath, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing); Excel.Worksheet xlWorksheet; // 循环所有DataTable for( int i=0; i<ds.Tables.Count; i++ ) { // 添加入一个新的Sheet页。 xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets.Add(oMissing,oMissing,1,oMissing); // 以TableName作为新加的Sheet页名。 xlWorksheet.Name = ds.Tables[i].TableName; // 取出这个DataTable中的所有值,暂存于stringBuffer中。 string stringBuffer = ""; for( int j=0; j<ds.Tables[i].Rows.Count; j++ ) { for( int k=0; k<ds.Tables[i].Columns.Count; k++ ) { stringBuffer += ds.Tables[i].Rows[j][k].ToString(); if( k < ds.Tables[i].Columns.Count - 1 ) stringBuffer += "\t"; } stringBuffer += "\n"; } // 利用系统剪切板 System.Windows.Forms.Clipboard.SetDataObject(""); // 将stringBuffer放入剪切板。 System.Windows.Forms.Clipboard.SetDataObject(stringBuffer); // 选中这个sheet页中的第一个单元格 ((Excel.Range)xlWorksheet.Cells[1,1]).Select(); // 粘贴! xlWorksheet.Paste(oMissing,oMissing); // 清空系统剪切板。 System.Windows.Forms.Clipboard.SetDataObject(""); } // 保存并关闭这个工作簿。 xlWorkbook.Close( Excel.XlSaveAction.xlSaveChanges, oMissing, oMissing ); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook); xlWorkbook = null; } catch(Exception ex) { MessageBox.Show(ex.Message); } finally { // 释放... xlApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp); xlApp = null; GC.Collect(); } } 缺点:1. 必须安装excel2. 如果在服务器端用,对服务器的性能冲击很大。 PrintPreviewDialog 预览不了第一页 数组 调试问题 DataTable读取XML格式问题 formview进入编辑模式修改或添加,得到的值还是以前的 构建加入注册记录的SQL语句 C# FTP 求救 很简单的一个统计失败条数的问题 求 一份简单的(WindowsForm)技术文档!!!!谢谢!!! 求c#考题,要二级考试了可怜一套完整的题都没有,那位高手来帮一下,谢谢 急。。。。在C#下textbox控件显示已绑定的某列中特定条件的数据 关于正则表达式的一个问题>>> Form程序设计中遇到的几个问题(急!!!!!!!!!!!!!!)为什么这个程序不能运行!提示错误!
cn.Open ();
SqlCommand ss=new SqlCommand ("select * from tablename ",cn);
SqlDataReader myreader=ss.ExecuteReader();
//
//创建一个Excel文件
int i;
object missing = System.Reflection.Missing.Value;
Excel.Application myexcel = new Excel.Application ( ); myexcel.Application.Workbooks.Add ( true );
//让Excel文件可见 myexcel.Visible=true; //第一行为报表名称 myexcel.Cells[1,4]="情况";
myexcel.Cells[2,1]="单号";
myexcel.Cells[2,2]="台号";
myexcel.Cells[2,3]="菜名";
myexcel.Cells[2,4]="打折";
myexcel.Cells [2,5]="单价"; //时间太长有可能所见到是######,手动把格拉宽就可以了
//逐行写入数据,
try
{
i=2;
while (myreader.Read())
{
i=i+1;
myexcel.Cells[i,1]=myreader.GetInt32 (9);
myexcel.Cells[i,2]=myreader.GetString(0);
myexcel.Cells [i,3]=myreader.GetString (2);
myexcel.Cells [i,4]=myreader.GetDecimal (3);
} }
finally
{
myreader.Close();
}
/// 将DataSet里所有数据导入Excel.
/// 需要添加COM: Microsoft Excel Object Library.
/// using Excel;
/// </summary>
/// <param name="filePath"></param>
/// <param name="ds"></param>
public static void ExportToExcel(string filePath, DataSet ds)
{
object oMissing = System.Reflection.Missing.Value;
Excel.ApplicationClass xlApp = new Excel.ApplicationClass();
try
{
// 打开Excel文件。以下为Office 2000.
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(filePath, oMissing, oMissing, oMissing, oMissing, oMissing,
oMissing, oMissing, oMissing, oMissing, oMissing, oMissing,
oMissing);
Excel.Worksheet xlWorksheet;
// 循环所有DataTable
for( int i=0; i<ds.Tables.Count; i++ )
{
// 添加入一个新的Sheet页。
xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets.Add(oMissing,oMissing,1,oMissing);
// 以TableName作为新加的Sheet页名。
xlWorksheet.Name = ds.Tables[i].TableName;
// 取出这个DataTable中的所有值,暂存于stringBuffer中。
string stringBuffer = "";
for( int j=0; j<ds.Tables[i].Rows.Count; j++ )
{
for( int k=0; k<ds.Tables[i].Columns.Count; k++ )
{
stringBuffer += ds.Tables[i].Rows[j][k].ToString();
if( k < ds.Tables[i].Columns.Count - 1 )
stringBuffer += "\t";
}
stringBuffer += "\n";
}
// 利用系统剪切板
System.Windows.Forms.Clipboard.SetDataObject("");
// 将stringBuffer放入剪切板。
System.Windows.Forms.Clipboard.SetDataObject(stringBuffer);
// 选中这个sheet页中的第一个单元格
((Excel.Range)xlWorksheet.Cells[1,1]).Select();
// 粘贴!
xlWorksheet.Paste(oMissing,oMissing);
// 清空系统剪切板。
System.Windows.Forms.Clipboard.SetDataObject("");
}
// 保存并关闭这个工作簿。
xlWorkbook.Close( Excel.XlSaveAction.xlSaveChanges, oMissing, oMissing );
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook);
xlWorkbook = null;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
// 释放...
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
xlApp = null;
GC.Collect();
}
}
1. 必须安装excel
2. 如果在服务器端用,对服务器的性能冲击很大。