利用Com组件产Excel完整操作
最近公司要批次产出报表,是利用控制台应用程序操作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完整操作的更多相关文章
- 利用NPOI组件产Excel完整操作
最终还是要使用NPOi了.刚开始做的是用com组件,发现如果本机不按照excel就不能使用,后来把其中一支改为了用Itextsharp产生pdf,但是还有几支批次要产生Excel,只能改用NPOI了. ...
- 使用ItextSharp产PDF完整操作
原文 使用ItextSharp产PDF完整操作 记得上回有写到用C#操作Excel(.net 4.0) 很多朋友说推荐用NPOI,的确,用微软自带的操作execl会有很大的问题.客户的主机不愿意安装e ...
- 利用kettle组件导入excel文件到数据库
利用kettle组件导入excel文件到数据库 1. 实现目标 把excel文件内容导入到目标表中:然后用java调用kettle的转换.excel文件的内容仅仅有两列,示比例如以下: wat ...
- 利用ItextSharp产PDF完整操作
记得上回有写到用C#操作Excel(.net 4.0) 很多朋友说推荐用NPOI,的确,用微软自带的操作execl会有很大的问题.客户的主机不愿意安装excel, 这时我才意识到用自带组件完全是不行的 ...
- 猜想-未做 利用office组件读取excel数据
---未实际使用过 用SQL-Server访问Office的Access和Excel http://blog.sina.com.cn/s/blog_964237ea0101532x.html 2007 ...
- NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))
在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- VS2010 MFC对Excel的操作
这是帮别人做项目遇到的一个问题,的那个是纠结了老长时间,本以为是一件很轻松的事... 首先,这里采用了OLE来对Excel进行操作,网上其实有大把的例子,虽然都可以运行,但是并不能满足项目要求,其实我 ...
- Microsoft.Office.Interop.Excel的用法以及利用Microsoft.Office.Interop.Excel将web页面转成PDF
1.常见用法 using Microsoft.Office.Interop.Excel; 1)新建一个Excel ApplicationClass ExcelApp = New A ...
随机推荐
- <<程序猿健康指南>> 笔记
序言: 长时间对着电脑工 作.一天下来基本不怎么走动的人,患高血压及 2 型糖尿病的风险远高于其他人群, 这两种疾病会对人体的健康产生长久的严重影响,还会增加心脏病及中风的几率. 前言: 阿米什人(A ...
- python中subprocess.Popen执行命令并持续获取返回值
先举一个Android查询连接设备的命令来看看Python中subprocess.Popen怎么样的写法.用到的命令为 adb devices. import subprocess order='ad ...
- 不吹不擂,你想要的Python面试都在这里了【315+道题】+精心整理的解答
Part01-Py基础篇(80) Part02-网络编程和并发(34) Part03-数据库和缓存(46) Part04-前端框架和其他(155) Part01-Py基础篇(80) 1.为什么学习Py ...
- SPOJ - DQUERY(区间不同数+树状数组)
链接:SPOJ - DQUERY 题意:求给定区间不同数的个数(不更新). 题解:离线+树状数组. 对所求的所有区间(l, r)根据r从小到大排序.从1-n依次遍历序列数组,在树状数组中不断更新a[i ...
- AppCan试用体验
最近自己想开发一个基于Android平台的小应用,但不想使用JAVA开发,还要快速实现功能,学习成本低. 所以找了很多框架,最后基本锁定在phoneGap和AppCan,又看了AppCan与phone ...
- 爬虫:Scrapy7 - Scrapy终端(Scrapy shell)
Scrapy 终端是一个交互终端,可以在未启动 spider 的情况下尝试及调试你的爬取代码.其本意是用来测试提取数据的代码,不过可以将其作为正常的 Python 终端,在上面测试任何 Python ...
- android瀑布流照片墙实现代码详解
照片墙的实现,是需要往手机里面添加很多图片的,如果没有对资源进行合理的释放,程序很快就会出现OOM.所以需要用到LruCache算法来缓存图片. 1,首先是图片资源类,这个类中包含了很多图片链接. p ...
- Python中的多线程编程,线程安全与锁(二)
在我的上篇博文Python中的多线程编程,线程安全与锁(一)中,我们熟悉了多线程编程与线程安全相关重要概念, Threading.Lock实现互斥锁的简单示例,两种死锁(迭代死锁和互相等待死锁)情况及 ...
- P4160 [SCOI2009]生日快乐
题目描述 windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕. 现在包括windy,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋糕. win ...
- webpack最佳入门实践系列(6)
10.css模块化 10.1.什么是css模块? CSS模块就是所有的类名都只有局部作用域的CSS文件,当你在一个JavaScript模块中导入一个CSS文件时,CSS模块将会定义一个对象,将文件中类 ...