C# 中使用 Excel

摘要:
使用System.Text;使用System.Reflection;使用System.Runtime.InteropServices;使用ExcelApplication=Microsoft.Office.Interop.Excel.ApplicationClass;
 

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;// 创建一个空的单元格对象
                 sheet.get_Range(sheet.Cells[29,2],sheet.Cells[29,2]).Orientation=Excel.XlOrientation.xlVertical;//字体竖直居中在单元格内

                 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(false, null, null); // 关闭 Excel 文件且不保存
             }
            catch (Exception ex)
            {
                 MessageBox.Show(ex.Message);
             }
            finally
            {
                 excel.Quit(); // 退出 Excel
                 excel = null; // 将 Excel 实例设置为空
                // 即便是这样, 有时在系统任务管理器中仍能看到一个 Excel 进程, 但有时也看不到
                // 据非权威人事说,这是 Office 2003 的 Bug. 这个问题有待与考证.
             }
         }
     }
}
            catch (Exception ex)
            {
                 MessageBox.Show(ex.Message);
             }
            finally
            {
                 excel.Quit(); // 退出 Excel
                 excel = null; // 将 Excel 实例设置为空
                // 即便是这样, 有时在系统任务管理器中仍能看到一个 Excel 进程, 但有时也看不到
                // 据非权威人事说,这是 Office 2003 的 Bug. 这个问题有待与考证.
             }
         }
     }
}


                 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(false, null, null); // 关闭 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# 的帮助.

免责声明:文章转载自《C# 中使用 Excel》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python3.6_x86通过FFpmeg获取视频或音频的时长和分辨率Qt-剪切板下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WritableWorkbook 详细用例 (转)

原文出处:http://lz881228.blog.163.com/blog/static/114197324201341755951817/     java 操作 Excel 最常用的就是JXL(java excel api)和POI,今先看下JXL吧。首先可以到http://www.andykhan.com/jexcelapi/download.ht...

JXL操作Excel

      jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的, 并不 依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。 另外需要说明的是,...

报表工具对比选型系列用例——多源分片报表

润乾报表、帆软报表、Smartbi、永洪 BI、亿信 BI 这几款国内产品都把中国复杂报表作为宣传点。我们以常见的多源分片为报表为用例,来对比评测这些产品的处理能力(由于时间和知识限制,个别很偏的功能点可能会有遗漏)。 内容比较长,如果不想看细节,可以直接跳到最后看结论。 用例说明 报表式样 数据结构 [订单表] 主数据存储在订单表中,该表通过雇员...

Bootstrap Table 中文文档(完整翻译版)

表格参数: 名称 标签 类型 默认 描述 - data-toggle String ‘table’ 不用写 JavaScript 直接启用表格。 classes data-classes String ‘table table-hover’ 表格的类名称。默认情况下,表格是有边框的 你可以添加 ‘table-no-bordered’ 来删除...

Navicat 11.2最新功能,你都get了吗?

Navicat 是一套数据数据库管理工具,最近Navicat升级了新版本,最新版本为11.2,对11.1 版本存在的 bug 进行了优化。Navicat 11 版本新增 100 多个功能,是致力于数据库管理的专业级别软件,使工作更有效率、更容易。 Navicat Cloud Navicat for MySQL 提供 Navicat Cloud 云服务,可以...

戳进来呗!五分钟就学会Python3怎么修改Excel数据(xlwt使用)

上次我们看过了xlrd的使用方法,那么怎么对Excel执行修改操作的?对于旧版的Excel文件我们用xlwt,但是对于新版的xlsx文件,使用openpyxl更合适一些。xlwt的使用比较简单,我们赶快开始学习吧 安装 安装和xlrd一样,pip install xlwt 创建对象 workbook = xlwt.Workbook() 创建表单对象 我们...