蓝天旭日

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

C#中EXCEL小应用举例

Posted on 2007-12-26 15:20 蓝天旭日 阅读(382) 评论(7)  编辑 收藏 所属分类: C#|控件
 

数据库系统中经常会使用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时进行转换,包括统计行等等……

Feedback

#1楼    回复  引用  查看    

2007-12-26 18:07 by bidaas      
那么请教一下大虾,excel文件的web导入导出怎么实现呢?
winform也行

#2楼    回复  引用    

2007-12-27 08:28 by hjdds [未注册用户]
上述讲的就是winform中的excel导出,笔者是先将数据查询填充进表内,然后按照要求将表直接导入到excel中......
......

#3楼    回复  引用    

2007-12-27 08:30 by hjdds [未注册用户]
http://www.cnblogs.com/lingyun_k/archive/2005/07/12/191740.html

#4楼    回复  引用    

2007-12-27 08:37 by 孟宪会之精彩世界 [未注册用户]
http://dotnet.aspx.cc/article/4eb79f05-b9a4-4e8a-836f-864393f40405/read.aspx

在C#中利用Excel做高级报表


孟宪会写的 ,比较经典......

#5楼    回复  引用  查看    

2007-12-27 12:24 by bidaas      
去看看

#6楼    回复  引用  查看    

2007-12-28 11:22 by Areyan      
如果在WebForm,那么服务端就要安装Excel或者需要其他开发包。
Microsoft.Office.Interop.Excel 是直接引用到Excel的.

#7楼 [楼主]   回复  引用  查看    

2008-07-24 09:51 by 蓝天旭日      
excel的导入和导出都是类似的,不过office版本差异代码略有不同.
office 2000 对应是9.0
office xp 对应是10.0
office 2003 对应是11.0

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-12-29 15:07 编辑过