蓝天旭日

高手如云,自己只是个菜鸟而已! 没有人在意你曾经的努力和散漫,只有人关注你是否有成就......
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

C#中EXCEL小应用举例

Posted on 2007-12-26 15:20  蓝天旭日  阅读(1268)  评论(7编辑  收藏  举报
 

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

首先加载引用:

using Microsoft.Office.Interop.Excel;

using ExcelApplication = 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时进行转换,包括统计行等等……