zoukankan      html  css  js  c++  java
  • C# 中使用 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;// 创建一个空的单元格对象
                     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# 的帮助.

  • 相关阅读:
    JAVA实现DES加密实现详解
    CentOS 7安装Hadoop 3.0.0
    使用JAVA开发微信公众平台(一)——环境搭建与开发接入
    Oracle触发器用法实例详解
    负载均衡中使用 Redis 实现共享 Session
    在windows上部署使用Redis
    java 线程排查问题流程
    使用Fernflower 比较准确的反编译整个java项目
    Mysql用户本机登陆不成功的解决
    kali 系统的源
  • 原文地址:https://www.cnblogs.com/guyandianzi/p/7466698.html
Copyright © 2011-2022 走看看