将DataTable中的数据导出成Excel

public bool ExportFile(System.Data.DataTable dt)
{
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*";
    sfd.Title = "Excel文件导出";
    string fileName = "";
    if (sfd.ShowDialog() == DialogResult.OK)
    {
        fileName = sfd.FileName;
        Excel.Application app = new Excel.Application();
        if (app == null)
        {
            MessageBox.Show("Excel启动失败!");
            return false;
        }
        try
        {
            app.Visible = false;
            Excel.Workbook xlWorkBook = app.Workbooks.Add(Type.Missing);
            Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
            int i;
            for (i = 0; i < dt.Columns.Count; i++)
            {
                xlWorkSheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;
            }
            for (i = 0; i < dt.Rows.Count; i++)
            {
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    string tt = dt.Rows[i][j].ToString();
                    xlWorkSheet.Cells[i + 2, j + 1] = tt;
                }
            }
            xlWorkBook.SaveAs(fileName, Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            xlWorkBook.Close(true, Type.Missing, Type.Missing);
            app.Quit();                   
                   
            xlWorkSheet = null;
            xlWorkBook = null;

            return true;
        }
        catch (System.Exception exc)
        {
            MessageBox.Show("excel运行错误:" + exc.Message);
            return false;
        }
    }
    else
    {
        return false;
    }
}

原文地址:https://www.cnblogs.com/pnljs/p/3160765.html