c#导出excel(3)

来源:互联网 发布:mysql 更改用户密码 编辑:程序博客网 时间:2024/06/05 00:09

数据库系统中经常会使用EXCEL,有的时候需要用excel作为数据源,有的时候需要将查询得到的数据用EXCEL来保存出来,总之会不断用到EXCEL…..

首先加载引用:

using Microsoft.Office.Interop.Excel;

usingExcelApplication = Microsoft.Office.Interop.Excel.Application;

注意,假若你先前已经加载using System.Data,那么注意:

不要直接DataTable table这样定义,而应该这样System.Data.DataTable table,或者自己再进行一个转换,因为ExcelApplication亦有DataTable类,

public static void DoToExcel(System.Data.DataTable table)

        {

            try

            {

                ExcelApplication excel = new ExcelApplication();

                int rowIndex = 1;

                int colIndex = 0;

                excel.Application.Workbooks.Add(true);

               

                foreach (DataColumn col in table.Columns)

                {

                    colIndex++;

                    excel.Cells[1, colIndex] = col.ColumnName;

                }

                foreach (DataRow row in table.Rows)

                {

                    rowIndex++;

                    colIndex = 0;

                    foreach (DataColumn col in table.Columns)

                    {

                        colIndex++;

                        excel.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();

                    }

                }

                excel.Visible = false;

               

            SaveFileDialog sf = new SaveFileDialog();

            sf.AddExtension = true;

            sf.Filter = "EXCEL 2003(*.xls)|*.xls|所有文件|*.*";

            sf.Title = "导出EXCEL另存为";

            if (sf.ShowDialog() == DialogResult.OK)

            {

                string fileName = sf.FileName;

                excel.ActiveWorkbook.SaveAs(fileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel9795, null, null, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);

                excel.Quit();

                excel = null;

                GC.Collect();

                MessageBox.Show("导出成功!");

              }

            }

            catch(Exception ex)

            {

                MessageBox.Show("导出失败!");

                WriteLogtxt("DoToExcel",ex.Message);

            }

        }

        #endregion

}

上述例子中,直接将参数传来的System.Data.DataTable table转换为EXCELcol.ColumnName都将是默认,最好在操作System.Data.DataTable table时进行转换,包括统计行等等……

原创粉丝点击