博客园  :: 首页  :: 联系 :: 管理

C# 中使用 Excel

Posted on 2007-06-28 10:26  sunrack  阅读(1661)  评论(1编辑  收藏  举报
# 中使用 Excel

运行环境: Microsoft Office Excel 2003 + Microsoft Visual Studio 2005

1. 为项目添加 COM 组件的引用
方法如下:
项目 -> 添加引用 -> com -> Microsoft Excel Object 11.0 Object Library -> 确定
此时项目里会增加 3 个引用, 分别是: Excel、Microsoft.Office.Core、VBIDE

2. 在类文件里添加如下命名空间的引用
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;

using ExcelApplication = Microsoft.Office.Interop.Excel.ApplicationClass; //为了与 System.Windows.Forms 命名空间下的 Application 类有所区分, 纯属方便代码的编写.

注: 最好不要用在窗体类中使用. 因为,当引入 Microsoft.Office.Interop.Excel 命名空间后, Microsoft.Office.Interop.Excel 命名空间下的 Application 接口会同 System.Windows.Forms 命名空间下的 Application 类产生二义性冲突. 要使用 Application 类, 就必须在 Application 前面添加完整的命名空间名.

经过以上 2 步的操作就可以使用 Excel 了. 但是, 关于 Excel 的 MSDN 很少, 多数都是 English 的. 这样对使用 Excel 带来了不便. 想调整单元格的大小都十分困难. 这里我告诉大家一个简单实用的笨方法. 那就是: 打开你的 Excel, 录制宏. 然后根据生成的 VB 代码, 去到 MSDN 里查相关 C# 的帮助.


下面是对 Excel 操作的相关代码, 列举了常用的 Excel 操作, 仅供参考.
===========================================================================

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
using ExcelApplication = Microsoft.Office.Interop.Excel.ApplicationClass;

namespace ExcalDemo
{
    
public class ExcelFiles
    
{
        
public void CreateExcelFiles()
        
{
            
//创建一个 Excel 实例
            ExcelApplication excel = new ExcelApplication();
            
try
            
{
                
// 注释掉的语句是:从磁盘指定位置打开一个 Excel 文件
                
//excel.Workbooks.Open("demo.xls", Missing.Value, Missing.Value, 
        
//Missing.Value,Missing.Value, Missing.Value, Missing.Value, 
        
//Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
        
//Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                
                excel.Visible 
= false;// 不显示 Excel 文件,如果为 true 则显示 Excel 文件
                excel.Workbooks.Add(Missing.Value);// 添加工作簿
                Worksheet sheet = (Worksheet)excel.ActiveSheet;// 获取当前工作表

                Range range 
= null;// 创建一个空的单元格对象
                
                range 
= sheet.get_Range("A1", Missing.Value);// 获取单个单元格
                range.RowHeight = 20;           // 设置行高
                range.ColumnWidth = 20;         // 设置列宽
                range.Borders.LineStyle = 1;    // 设置单元格边框
                range.Font.Bold = true;         // 加粗字体
                range.Font.Size = 20;           // 设置字体大小
                range.Font.ColorIndex = 5;      // 设置字体颜色
                range.Interior.ColorIndex = 6;  // 设置单元格背景色
                range.HorizontalAlignment = XlHAlign.xlHAlignCenter;// 设置单元格水平居中
                range.VerticalAlignment = XlVAlign.xlVAlignCenter;// 设置单元格垂直居中
                range.Value2 = "设置行高和列宽";// 设置单元格的值

                range 
= sheet.get_Range("B2""D4");// 获取多个单元格
                range.Merge(Missing.Value);         // 合并单元格
                range.Columns.AutoFit();            // 设置列宽为自动适应
                range.NumberFormatLocal = "#,##0.00";// 设置单元格格式为货币格式
        
// 设置单元格左边框加粗
                range.Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;
        
// 设置单元格右边框加粗
                range.Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;
                range.Value2 
= "合并单元格";

                
// 页面设置
                sheet.PageSetup.PaperSize = XlPaperSize.xlPaperA4;          // 设置页面大小为A4
                sheet.PageSetup.Orientation = XlPageOrientation.xlPortrait; // 设置垂直版面
                sheet.PageSetup.HeaderMargin = 0.0;                         // 设置页眉边距
                sheet.PageSetup.FooterMargin = 0.0;                         // 设置页脚边距
                sheet.PageSetup.LeftMargin = excel.InchesToPoints(0.354330708661417); // 设置左边距
                sheet.PageSetup.RightMargin = excel.InchesToPoints(0.354330708661417);// 设置右边距
                sheet.PageSetup.TopMargin = excel.InchesToPoints(0.393700787401575);  // 设置上边距
                sheet.PageSetup.BottomMargin = excel.InchesToPoints(0.393700787401575);// 设置下边距
                sheet.PageSetup.CenterHorizontally = true;                  // 设置水平居中

                
// 打印文件
                sheet.PrintOut(Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                
                
// 保存文件到程序运行目录下
                sheet.SaveAs(System.Windows.Forms.Application.StartupPath + "\demo.xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

                excel.ActiveWorkbook.Close(
falsenullnull); // 关闭 Excel 文件且不保存
            }

            
catch (Exception ex)
            
{
                MessageBox.Show(ex.Message);
            }

            
finally
            
{
                excel.Quit(); 
// 退出 Excel
                excel = null// 将 Excel 实例设置为空
                
// 即便是这样, 有时在系统任务管理器中仍能看到一个 Excel 进程, 但有时也看不到
                
// 据非权威人事说,这是 Office 2003 的 Bug. 这个问题有待与考证.
            }

        }

    }

}

 

===========================================================================

注: 如果不能正常运行, 请参照以下操作.
 
安装 Office 主互操作程序集

1. 在 "控制面板" -> "添加或删除程序" 中选择 Microsoft Office, 单击"更改".
2. 选择"添加或删除功能", 然后单击"下一步".
3. 勾选"选择应用程序的高级自定义", 然后单击"下一步".
4. 展开"Microsoft Office Excel",单击".NET 可编程性支持", 选择"从本机运行全部程序".
5. 展开"Microsoft Office Word", 单击".NET 可编程性支持", 选择"从本机运行全部程序".
6. 展开"Office 工具", 单击"Microsoft Forms 2.0 .NET 可编程性支持", 选择"从本机运行全部程序".
7. 展开"Office 工具", 展开"Microsoft Graph", 单击".NET 可编程性支持", 选择"从本机运行全部程序".
8. 按照同样的方法, 为所需的其他 Office 应用程序安装主互操作程序集.
9. 单击"更新".

更新完成后, 主互操作程序集随即安装在全局程序集缓存 (GAC) 中.