日期:2014-05-20  浏览次数:21077 次

请教: 将查询到的结果导到EXCEL的代码 谢谢
select   *   from   tablename   的结果导到       EXCEL
谢谢

------解决方案--------------------
/// <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();
}
}

------解决方案--------------------
public void ExpToExcel()
{
try
{
object[,] cache = new object[this.lv.Items.Count + 1, lv.Columns.Count];
for (int i = 0; i < lv.Columns.Count; i++)
{
cache[0, i] = lv.Columns[i].Text;
for (int j = 0; j < lv.Items.Count; j++)
{
cache[j+1,0]= " ' "+lv.Items[j].SubItems[0].Text;
cache[j + 1, i] = lv.Items[j].SubItems[i].Text;
}
}
Excel.Application app1 = new Excel.Application();
Excel.Workbook book1 = app1.Workbooks.Add(Type.Missing);
Excel.Worksheet sheet1 = (Excel.Worksheet)book1.Sheets[1];
string sRange = string.Format( "A1:{0}{1} ", (char)( 'A ' + (lv.Columns.Count - 1)), lv.Items.Count + 1);
sheet1.get_Range(sRange, Type.Missing).Value2 = cache;
app1.Visible = true;
}
catch(System.Exception err)
{
throw new Exception(err.Message);