调用:
string strSql = @"select * from part;select * from part";
DataSet ds= SqlHelper.ExcuteDataset(strSql);
ds.Tables[0].TableName = "第一张表";
ds.Tables[1].TableName = "第二张表";
ExcelHelper.ExportToExcel(ds, @"D:\1.xlsx");
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Excel = Microsoft.Office.Interop.Excel;
namespace ClassLib
{
public static class ExcelHelper
{
public static void ExportToExcel(DataSet ds, string strExcelFileName)
{
Excel.Application ExcelApp = new Excel.Application();//实例化一个excel程序对象。启动了进程
ExcelApp.Visible = false;//让后台执行设置为不可见,为true的话会看到打开一个Excel
Excel.Workbook workbook = ExcelApp.Workbooks.Add(true);//添加一个workbook,经调试内含一张worksheet
//Excel.Worksheet worksheet = workbook.Worksheets.Add(true );//此添加方法错误。
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets.get_Item(1);//设置内含的一张worksheet为活动sheet
int tableNum = 1;
foreach (DataTable dt in ds.Tables)
{
if (tableNum > 1)
{
//worksheet = workbook.Worksheets.Add();完整方法是workbook.Worksheets.Add(Before, After, Count, Type);before参数后,after参数前。count为个数,type为类型可
//选xlWorksheet、xlChart、xlExcel4MacroSheet 或 xlExcel4IntlMacroSheet,例如:excel.Worksheets.Add(System.Reflection.Missing.Value, sheet, 1, Excel.XlSheetType.xlWorksheet);
worksheet = (Excel .Worksheet )workbook.Worksheets.Add();//添加一张工作薄到当前工作薄前面 ,等价于以下三句
// workbook.Worksheets.Add();//添加一张工作薄
// worksheet = workbook.Worksheets[1];//获取第1张工作薄
//(Excel.Worksheet)excel.Application.Worksheets.get_Item(1);//设置第1张工作薄为活动
}
for (int i = 0; i < dt.Columns.Count; i++)
{
Excel.Range range = (Excel.Range)worksheet.Cells[1, i + 1];
range.Value = dt.Columns[i].ToString();//行列都是从1开始的
range.HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐
}
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
worksheet.Cells[i + 2, j + 1] = dt.Rows[i][j].ToString();//因为首行是列头,所以从第二行开始
}
}
worksheet.Name = dt.TableName;
tableNum++;
}
//设置禁止弹出保存和覆盖的询问提示框
ExcelApp.DisplayAlerts = false;
ExcelApp.AlertBeforeOverwriting = false;
ExcelApp.Visible = false;
workbook.SaveAs(strExcelFileName);
ExcelApp.Quit(); //确保Excel进程关闭
ExcelApp = null;
GC.Collect();
}
}
}