最近公司要批次产出报表,是利用控制台应用程序操作Excel,并设置各种样式。

在网上搜索此类的例子,但是感觉一些用法都已经发生了变化,我用的.net 4.0 ,Microsoft.Office.Interop.Excel 为14.0.0.0,这些操作过程是我在一个一个试验出来的,感觉学到了很多东西,在此和大家分享一下对Excel的基本用法用法,适合没做过此类功能的同仁学习了...

1:关于引用

先添加参考,再引用

using Excel = Microsoft.Office.Interop.Excel;

2:初始化应用类

            Excel.Range rRang;//用此矩形来操作样式
Excel.Application xls_exp = new Excel.Application();
Excel._Workbook xls_book = xls_exp.Workbooks.Add(Missing.Value);
Excel._Worksheet xls_sheet = (Excel._Worksheet)xls_book.ActiveSheet;//工作表

3:工作表的整体样式的设定

            xls_sheet.Cells.HorizontalAlignment = Excel.Constants.xlLeft;//左對齊
xls_sheet.Cells.Font.Name = "新細明體";
xls_sheet.Cells.Font.Size = ;
xls_sheet.Cells.WrapText = true;//自動換行
xls_sheet.Cells.EntireRow.AutoFit();//行高根据内容自动调整

4:设置列宽

 ((Excel.Range)xls_sheet.Cells[, "A"]).ColumnWidth = 10.75;

5:合并单元格,并赋值

            rRang = xls_sheet.Range[xls_sheet.Cells[, ], xls_sheet.Cells[, ]];
rRang.Merge(Missing.Value);
rRang.Value = "XXXXXX";
rRang.Cells.HorizontalAlignment = Excel.Constants.xlCenter;//居中

6:为单个单元格赋值,并为一个矩形设置为中等宽度的边框

 xls_sheet.Cells[, "D"] = "主旨:";
rRang = xls_sheet.Range[xls_sheet.Cells[, "E"], xls_sheet.Cells[, "R"]];
rRang.Borders.get_Item(Excel.XlBordersIndex.xlEdgeBottom).Weight = Excel.XlBorderWeight.xlMedium;

7:设置字体大小和粗体

            rRang = xls_sheet.Range[xls_sheet.Cells[, ], xls_sheet.Cells[, "E"]];
rRang.Columns.Font.Size = ;
rRang.Columns.Font.Bold = true;

8:设置单元格颜色和字体颜色(Color 为引用的System.Drawing)

            rRang = xls_sheet.Range[xls_sheet.Cells[, "N"], xls_sheet.Cells[ITotalCount + , "P"]];
rRang.Columns.Interior.Color = Color.LightGoldenrodYellow; rRang = xls_sheet.Range[xls_sheet.Cells[, "I"], xls_sheet.Cells[ITotalCount+, "J"]];
rRang.Columns.Font.Color = Color.Red;

9:保存文件,关闭Execl

            if (!Directory.Exists(strPath))
{
Directory.CreateDirectory(strPath); }
strPath = strPath + strFileName;
if (File.Exists(strPath))
{
File.Delete(strPath);
}
xls_sheet.Name = "XXXXXX";
xls_sheet.SaveAs(strPath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
xls_exp.ActiveWorkbook.Close(false, strFileName, null);
xls_exp.Quit();
xls_exp = null;

至此,基本上Execl的操作是OK的,通过这些样式的设置,我已经做出了很漂亮的Execl文件

下面附缩小版的设计图一张,因为涉及公司机密,这些资料会看不清

利用Com组件产Excel完整操作的更多相关文章

  1. 利用NPOI组件产Excel完整操作

    最终还是要使用NPOi了.刚开始做的是用com组件,发现如果本机不按照excel就不能使用,后来把其中一支改为了用Itextsharp产生pdf,但是还有几支批次要产生Excel,只能改用NPOI了. ...

  2. 使用ItextSharp产PDF完整操作

    原文 使用ItextSharp产PDF完整操作 记得上回有写到用C#操作Excel(.net 4.0) 很多朋友说推荐用NPOI,的确,用微软自带的操作execl会有很大的问题.客户的主机不愿意安装e ...

  3. 利用kettle组件导入excel文件到数据库

    利用kettle组件导入excel文件到数据库 1.     实现目标 把excel文件内容导入到目标表中:然后用java调用kettle的转换.excel文件的内容仅仅有两列,示比例如以下: wat ...

  4. 利用ItextSharp产PDF完整操作

    记得上回有写到用C#操作Excel(.net 4.0) 很多朋友说推荐用NPOI,的确,用微软自带的操作execl会有很大的问题.客户的主机不愿意安装excel, 这时我才意识到用自带组件完全是不行的 ...

  5. 猜想-未做 利用office组件读取excel数据

    ---未实际使用过 用SQL-Server访问Office的Access和Excel http://blog.sina.com.cn/s/blog_964237ea0101532x.html 2007 ...

  6. NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))

    在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...

  7. NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))

    NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...

  8. VS2010 MFC对Excel的操作

    这是帮别人做项目遇到的一个问题,的那个是纠结了老长时间,本以为是一件很轻松的事... 首先,这里采用了OLE来对Excel进行操作,网上其实有大把的例子,虽然都可以运行,但是并不能满足项目要求,其实我 ...

  9. Microsoft.Office.Interop.Excel的用法以及利用Microsoft.Office.Interop.Excel将web页面转成PDF

    1.常见用法           using Microsoft.Office.Interop.Excel; 1)新建一个Excel ApplicationClass ExcelApp = New A ...

随机推荐

  1. javascript数组&省市联动分别用js数组和JSON实现

    1.定义数组的三种方式: **数组可以存放不同的数据类型   第一种: var arr=[1,2,3];   var arr=[1,"2",true];   第二种: 使用内置对象 ...

  2. ajax跨域请求_url:http://XXX

    利用别的项目提供的一个接口,传入用户名和密码,根据返回的结果判断登陆成功与否. 不经过后台,在js中用ajax实现.对ajax而言,发送跨域请求,与一般写法不同. 如果支持jsonp,则将dataTy ...

  3. 远程 RADIUS 服务器组

    远程 RADIUS 服务器组 远程 RADIUS 服务器组是包含一个或多个 RADIUS 服务器的已命名的组.IAS 用作 RADIUS 请求消息的 RADIUS 代理时,必须指定远程 RADIUS ...

  4. 《算法》C++代码 Dijkstra

    单源最短路,复杂度是O(N²),堆优化的是O(NlogN).基本思想是贪心,每次都加入一个当前最近的点,可以证明每次当时最近的点就是当前最短的路径.因此,所有点都加入之后,起点到所有点的最短路径就都求 ...

  5. vim基本配置备份

    我的vim基本配置如下,在这里作个备份: set background=light syntax on set number set smartindent set expandtab set tab ...

  6. 20、AngularJs知识点总结 part-2

    1.作用域 当你在angularJs中创建控制器时,可以将$scope对象作为一个参数进行传递: scope 是一个 JavaScript 对象,带有属性和方法,这些属性和方法可以在视图和控制器中使用 ...

  7. scheduled定时任务cron表达式知识地址

    https://www.cnblogs.com/javahr/p/8318728.html https://www.cnblogs.com/sunjie9606/archive/2012/03/15/ ...

  8. [oldboy-django][2深入django]点击刷新验证码

    # 点击更新验证码,只要重新在发送一个请求即可 <img src="/check_code/" onclick="updateCode(this);" w ...

  9. HDU 2491

    欢迎参加——BestCoder周年纪念赛(高质量题目+多重奖励) Priest John's Busiest Day Time Limit: 4000/2000 MS (Java/Others)    ...

  10. 记一下STL的一个题

    A. Diversity time limit per test 1 second memory limit per test 256 megabytes input standard input o ...