DataTable导出到Excel数据

来源:互联网 发布:dev c 编程 编辑:程序博客网 时间:2024/04/25 07:36
public static void ExportDataToExcel(DataTable dt, string filePath)
        {
            try
            {
                if (filePath != string.Empty)
                {
                    Excel.ApplicationClass xlApp = new Excel.ApplicationClass();
                    Excel.WorkbookClass wb = (Excel.WorkbookClass)xlApp.Workbooks.Add(System.Reflection.Missing.Value);
                    //写标题
                    for (int k = 1; k <= dt.Columns.Count; k++)
                    {
                        xlApp.Cells[1, k] = dt.Columns[k - 1].ColumnName;
                    }
                    //设置标题头大小,背景颜色
                    xlApp.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, dt.Columns.Count]).Cells.Font.Size = 15;
                    xlApp.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, dt.Columns.Count]).Cells.Interior.Color = System.Drawing.Color.Red.ToArgb();
                    xlApp.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, dt.Columns.Count]).EntireRow.AutoFit();
                    xlApp.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, dt.Columns.Count]).EntireColumn.AutoFit();
                    //写内容
                    for (int i = 1; i <= dt.Rows.Count; i++)
                    {
                        for (int j = 1; j <= dt.Columns.Count; j++)
                        {
                            if (j == dt.Columns.Count)
                            {
                                xlApp.Cells[i + 1, j] = dt.Rows[i - 1][j - 1];
                            }
                        }
                    }
                    //保存内容
                    wb.Saved = true;
                    xlApp.ActiveWorkbook.SaveCopyAs(filePath + "_" + DateTime.Now.ToString("yyyyMMdd-HHmmss") + ".xls");
                    //退出程序,关闭资源
                    xlApp.Quit();
                    System.Runtime.InteropServices.Marshal.ReleaseComObject((object)xlApp);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }