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");
                }
            }
        }
    }
  • 相关阅读:
    java对对象或者map的属性进行排序
    java生成32的md5签名串
    mybatis检测mysql表是否存在
    eureka服务注册发现流程和核心参数
    概率分布之间的距离度量以及python实现(三)
    距离度量以及python实现(二)
    距离度量以及python实现(一)
    tensorflow 1.0 学习:用别人训练好的模型来进行图像分类
    tensorflow 1.0 学习:模型的保存与恢复(Saver)
    tensorflow 1.0 学习:参数和特征的提取
  • 原文地址:https://www.cnblogs.com/honeymoon/p/3103602.html
Copyright © 2011-2022 走看看