最近公司要批次产出报表,是利用控制台应用程序操作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. 利用split方法计算字符串中出现字母最多的次数

    最近练习一些简单的算法题,知道自己很不聪明,但却没想到用了这么久,划算不划算是个需要考虑的问题, 其中有个算法是:统计一个字符串出现最多的字母,网上很多自己的见解,但是才疏学浅,有些地方看的有点困难, ...

  2. USACO Section2.1 Sorting a Three-Valued Sequence 解题报告

    sort3解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  3. 为什么要搞vim

    一. 先得想清楚折腾vim受的这顿折磨值不值.值.零碎记录几点. 迫使我使用vim的原因如下: (1)之前实习的公司的开发机上只有vim,以后工作的公司也只有vim,同部门的同事大都用vim:如果不用 ...

  4. 基于Python的selenuim自动化测试尝试

    工作这么多年了,终于狠下心好好开始学学自动化测试相关知识,揭开这层神秘的面纱. 困难重重,障碍很多,但好在每天都多少有点小收获. 很感谢一个QQ好友推荐的虫师,也非常感谢在这个契机读到了虫师编著的&l ...

  5. Python import与from import使用

    Python程序可以调用一组基本的函数(即内建函数),比如print().input()和len()等函数.Python本身也内置一组模块(即标准库).每个模块都是一个Python程序,且包含了一组相 ...

  6. HDU 3856 Palindrome ( Manacher + RMQ + 二分 ) WA!!!

    不知道错在哪了,求大神指教!!! 思路:用manacher求出每个以str[i]为中心轴的回文串的长度,RMQ预处理区间最大值,对于每个查询,二分最大回文串长,判定是否可行. #include < ...

  7. bash语法注意点

    bash 语法注意点 =和不能分开 如: val=expr $a + $b` [空格 *** 空格]条件判断要有空格 如: if [ $a ==$b ] 表达式和运算符之间要有空格, $a空格 + 空 ...

  8. Android记事本开发01

    今天: 学习一下Android的基本知识,了解一下记事本开发大概需要哪些知识. 昨天: 无 遇到的问题:

  9. [poj] 3304 Segments || 判断线段相交

    原题 给出n条线段,判断是否有一条直线与所有线段都有交点 若存在这样一条直线,那么一定存在一条至少过两个线段的端点的直线满足条件. 每次枚举两条线段的两个端点,确定一条直线,判断是否与其他线段都有交点 ...

  10. [poj] 3977 Subset || 折半搜索MITM

    原题 给定N个整数组成的数列(N<=35),从中选出一个子集,使得这个子集的所有元素的值的和的绝对值最小,如果有多组数据满足的话,选择子集元素最少的那个. n<=35,所以双向dfs的O( ...