zoukankan      html  css  js  c++  java
  • 动态调用Excel,从而避免因为版本不同而使用程序无法编辑或调试

    代码如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Reflection;
    
    namespace WindowsFormsApplication2
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                string filePath=string.Empty;
                SaveFileDialog saveFile = new SaveFileDialog();
                saveFile.Filter = "Excel 文件(*.xls)|*.xls|Excel 文件(*.xlsx)|*.xlsx|所有文件(*.*)|*.*";
                if (saveFile.ShowDialog()==DialogResult.OK)
                {
                    filePath = saveFile.FileName;
                }
                if (string.IsNullOrEmpty(filePath))
                {
                    return;
                }
    
                object objApp;
                object objBook;
                object objBooks;
                object objSheets;
                object objSheet;
                object objRange;
                object objCells;
                object[] Parameters;
    
                try
                {
                    // 获取Excel类型并建立其实例
                    Type objExcelType = Type.GetTypeFromProgID("Excel.Application");
                    if (objExcelType == null)
                    {
                        return;
                    }
                    objApp = Activator.CreateInstance(objExcelType);
                    if (objApp == null)
                    {
                        return;
                    }
                    //获取Workbook集
                    objBooks = objApp.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, null, objApp, null);
    
                    //添加一个新的Workbook
                    objBook = objBooks.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, objBooks, null);
    
                    //获取Sheet集
                    objSheets = objBook.GetType().InvokeMember("Worksheets", BindingFlags.GetProperty, null, objBook, null);
    
                    //获取第一个Sheet对象
                    Parameters = new Object[1] { 1 };
                    objSheet = objSheets.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, objSheets, Parameters);
    
                    try
                    {
    
                        //获取操作范围
                        for (int i = 1; i < 100; i++)
                        {
                            Parameters = new Object[2] { 1, i };
                            objCells = objSheet.GetType().InvokeMember("Cells", BindingFlags.GetProperty, null, objSheet, Parameters);
                            //向指定单元格填写内容值
                            Parameters = new Object[1] { "Hello, World!" };
                            objCells.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, objCells, Parameters);
                        }
    
                    }
                    catch (Exception operException)
                    {
                        MessageBox.Show(operException.Message);
                    }
                    finally
                    {
                        //不提示保存
                        Parameters = new Object[1] { false };
                        objApp.GetType().InvokeMember("DisplayAlerts", BindingFlags.SetProperty, null, objApp, Parameters);
                       
    
                        //保存文件并退出
                        Parameters = new Object[1] { filePath };
                        objBook.GetType().InvokeMember("SaveAs", BindingFlags.InvokeMethod, null, objBook, Parameters);
                        objApp.GetType().InvokeMember("Quit", BindingFlags.InvokeMethod, null, objApp, null);
                        GC.Collect();
                        MessageBox.Show("Save successfully!");
                    }
                }
                catch (Exception theException)
                {
                    String errorMessage;
                    errorMessage = "Error: ";
                    errorMessage = String.Concat(errorMessage, theException.Message);
                    errorMessage = String.Concat(errorMessage, " Line: ");
                    errorMessage = String.Concat(errorMessage, theException.Source);
    
                    MessageBox.Show(errorMessage, "Error");
                }
            }
        }
    }
  • 相关阅读:
    linux 系统管理(2) 文件或目录数量统计
    linux系统管理(1)之 内核编译选项查看
    apt 命令大全
    system命令
    ubuntu 登陆闪回
    网络知识之ipset
    mac 系统配置(一)
    windows下的qt编译器配置
    QT5.14.1+qwt-6.1.4编译
    无法打开源文件QtWidgets/QApplication
  • 原文地址:https://www.cnblogs.com/honeymoon/p/3103602.html
Copyright © 2011-2022 走看看