C#操作Excel进行报表开发系列共写了八篇,也已经有很久没有新东西了,现在整理一下,方便以后查阅,如果有写新的,会同时更新。需要注意的是因为Office的版本不同,实际的代码可能会有所不同,但是都是多几个,少几个参数,补上参数System.Reflection.Missing.Value就可以了
将Excel应用于报表开发中(一)--开始
使用C#和Excel进行报表开发(二)-操作统计图(Chart)
使用C#和Excel进行报表开发(三)-生成统计图(Chart)
使用C#和Excel进行报表开发(四)-复制单元格
使用C#和Excel进行报表开发(五)-操作单元格边框和颜色
使用C#和Excel进行报表开发(六)-操作行和列
使用C#和Excel进行报表开发(七)-设置单元格的显示格式
使用C#和Excel进行报表开发(八)-用程序绑定数据源


目前的商业工具如水晶报表,ActiveReport等,都提供了灵活,强大的功能,但是对于比较特殊化的表格,特别是国内的一些应用,都是一个个的格子组成的,这样要是用线来一根根画就比较麻烦,但是这类工具还都不提供表格化的报表布局定义方式。一个很好的选择是VS2005的客户端报表(RDLC),但是在某几个方面还是不够灵活,例如,灵活性有限制,要想自己编码实现一些复杂逻辑还是有困难;要VS2005,对于一些还在使用VS2003的项目就只有眼馋的份了。用Excel来实现,优点在于页面布局设计灵活,同时使用代码来操作数据要更灵活,更精确。

下面是一个简单的例子,打开一个定义好的Excel文件,这个文件是作为报表的模板,然后向模板的指定格子里填充数据,形成一个报表,在web方式下可以按照指定的命名方式在服务器上生成一个excel文件,之后传送到客户端,由客户端启动excel进行打印。

Excel.Application m_objExcel = null;

Excel._Workbook m_objBook = null;

Excel.Sheets m_objSheets = null;

Excel._Worksheet m_objSheet = null;

Excel.Range m_objRange = null;

object m_objOpt = System.Reflection.Missing.Value;

try

{

m_objExcel = new Excel.Application();

m_objBook = m_objExcel.Workbooks.Open("z:\\Book1.xls", m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);

m_objSheets = (Excel.Sheets)m_objBook.Worksheets;

m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));

string[] info = new string[5] { "Cure", "26", "dahuzizyd.cnblogs.com", "汉", "按时 ?放奥斯丁奥斯丁非是否奥斯丁非" };

m_objRange = m_objSheet.get_Range("B1", m_objOpt);

m_objRange.Value = info[0];

m_objRange = m_objSheet.get_Range("E1", m_objOpt);

m_objRange.Value = info[1];

m_objRange = m_objSheet.get_Range("B2", m_objOpt);

m_objRange.Value = info[2];

m_objRange = m_objSheet.get_Range("E2", m_objOpt);

m_objRange.Value = info[3];

m_objRange = m_objSheet.get_Range("A3", m_objOpt);

m_objRange.Value = info[4];

m_objExcel.DisplayAlerts = false;

m_objBook.SaveAs("z:\\Book2.xls", m_objOpt, m_objOpt,

m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,

m_objOpt, m_objOpt, m_objOpt, m_objOpt);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

m_objBook.Close(m_objOpt, m_objOpt, m_objOpt);

m_objExcel.Workbooks.Close();

m_objExcel.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);

System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);

m_objBook = null;

m_objExcel = null;

GC.Collect();

}

可以看到,使用Excel要进行一部分的编码,好在这部分还不太复杂,但是最大的问题就在于当报表需求变更时,要重新编译部署,而且当格子特别多的时候,要这样硬编码还是挺痛苦的一件事。不过使用Excel毕竟给我们提供了一种选择,可以在开发时对多种方案权衡利弊,使用最适合项目的。

原文地址:http://www.cnblogs.com/dahuzizyd/archive/2007/04/11/CSharp_Excel_Report_Chart_All.html

整个系列均为转载,转载请注明出处!

使用C#和Excel进行报表开发(一)--开始相关推荐

  1. 使用C#和Excel进行报表开发(五)-操作单元格边框和颜色 【转】

    在用Excel作报表的时候,可能需要操作单元格的边框和填充颜色和纹理等操作,下面的代码说明如何设置选中的单元格的填充纹理和边框 try { ThisApplication = new Excel.Ap ...

  2. 使用C#和Excel进行报表开发(四)-复制单元格 【转】

    在用Excel作报表的时候,可能会碰到分页的情况,这样就要分成多个Sheet显示,如果要在每页都保留表头,就需要将第一页作为模板设计的表头部分拷贝到其他的Sheet上,这时就要用用到Excel中的单元 ...

  3. 使用C#和Excel进行报表开发(5)

    内容摘要:在用Excel作报表的时候,可能需要操作单元格的边框和填充颜色和纹理等操作,下面的代码说明如何设置选中的单元格的填充纹理和边框. 在用Excel作报表的时候,可能需要操作单元格的边框和填充颜 ...

  4. oracle excel报表开发,深入浅出OracleEBS之Excel报表开发.doc

    深入浅出OracleEBS之Excel报表开发 Oracle ERP最佳技术实践 E-Business Suite Oracle核心应用技术 Excel报表开发 Author:黄建华Jianhua.H ...

  5. 还在被Excel报表折磨?学会这个进阶工具,报表开发不是事儿

    最近奥运会期间,作为一名报表开发者,竟然连男单乒乓夺冠这么精彩的画面都没空看, 因为- 人家下班我做表,人家睡觉我做表,人家看比赛我做表,一年到头都在跟Excel做斗争!!! 其实造成这种原因的关键, ...

  6. 三周一套报表开发系统,原来Excel的顶级替代品是它

    老规矩,文末送模板! 报表是企业IT数据建设里必不可少的一环,可以说小到一张张出入单据,大到各个公司里的大屏看板等等,都是重要的数据资产. 像我这种程序员平日里也经常会遇到要做报表的情况,比如领导每月 ...

  7. 这个低代码报表开发平台,操作类似Excel,用好了不需要加班

    现在低代码开发平台很火,能够通过零代码或少量代码就可以快速创建应用. 但是从实践结果来看,完全的零代码开发应用是不可能的,机器替代人类智慧还需要很长的路要走.但是介于两者之间的低代码模式开发应用是值得 ...

  8. birt报表数据只有一条_这个低代码报表开发平台,操作类似Excel,用好了不需要加班...

    现在低代码开发平台很火,能够通过零代码或少量代码就可以快速创建应用. 但是从实践结果来看,完全的零代码开发应用是不可能的,机器替代人类智慧还需要很长的路要走.但是介于两者之间的低代码模式开发应用是值得 ...

  9. 电信业务支撑报表开发工具解决方案

    电信业务支撑报表开发工具解决方案 电信现状 现今中国电信为了运营方便,采用了多套系统进行日常运营支撑,但是在运营中面临了如下两点难处: 1:不及时.新业务比如说政企招财宝开通时,由于一开始设计未考虑该 ...

最新文章

  1. 理解Java中的hashCode 和 equals 方法
  2. 7-7 列出叶结点 (10 分)
  3. window添加右键菜单
  4. 【时间序列分析】01.时间序列与平稳序列
  5. 服务器开机黑屏无法进入系统,电脑黑屏无法进入系统怎么办?
  6. 电影《失控玩家》:软件2.0,让游戏角色“觉醒”了?
  7. 页面获取服务器图片路径问题
  8. mysql学习记录之创建数据库指定编码
  9. 【单片机】辉光管时钟系列<一>--单片机最小系统
  10. Python的日志输出
  11. 【经营智慧】004.做一个善于发挥自己才智的人
  12. 集群间实现Session共享
  13. 微信 3.9 版本,Sandboxie 沙盒双开报错
  14. 手贱对mac进行了系统更新到 macOS Big Sur 出现系统异常导致开不了机,一直卡在开机页面,解决过程。
  15. MySQL_帐号密码匹配规则与命名规范
  16. 生成特定架构内核cscope数据库
  17. C++学习笔记(一):中文字符的处理——批量读取和修改文件夹下文件名,以及wchar_t/wstring与char/string不得不说的故事
  18. matlab 显示高光谱,Matlab在高光谱图像处理上的使用指南(不断补充ing)
  19. s110 raid linux,dell s110阵列卡驱动下载
  20. 机架式服务器怎么维护,机架式服务器只能放在机房使用吗?

热门文章

  1. 城市应急指挥系统建设方案(智慧应急综合管理平台)
  2. lol1.7更新服务器维护,LOL7.1版本更新内容时间公告
  3. 一些常用的编程语言和他们的特点
  4. 手把手教你OneNET数据可视化
  5. 广告roi怎么计算公式_ROI是什么意思,怎么计算的?
  6. Python数据处理——平均数、中位数、标准差、极差
  7. day29—JavaScript中DOM的基础知识应用
  8. b站黑马的Vue快速入门案例代码——【axios+Vue2】悦听player(音乐播放器)
  9. 数据建模(E-R图)
  10. 【Git】SSL certificate problem: unable to get local issuer certificate错误的解决办法