首页 > 编程语言 >C# 安装EXCEL插件的坑

C# 安装EXCEL插件的坑

时间:2025-01-11 16:46:21浏览次数:1  
标签:插件 false addin C# EXCEL Installed xlsApp true xllfi

踩坑,找了半天的资料没解决,报错如下,明明与EXCEL VBA一样的代码。。。

 

最后自己分析VBA与C# 操作的区别,VBA是打开Excel界面操作,C# 是未开启Excel出现界面操作的

    private static void Main(string[] args)
    {
        dynamic xlsApp = Microsoft.VisualBasic.Interaction.CreateObject("Excel.Application");
        xlsApp.Visible = true;//关键的代码,否则无法完成安装
        xlsApp.Workbooks.Add();
        xlsApp.Windows(1).Visible = true;
        xlsApp.ScreenUpdating = false;
        try
        {
            var xllfi = new FileInfo(@"C:\MyExcelDna.xll");
            if (!xllfi.Exists) return;
            bool flag = false;
            for (int i = xlsApp.Addins.Count; i >= 1; i--)
            {
                var addin = xlsApp.Addins[i];
                if (addin.Name == xllfi.Name)
                {
                    if (addin.FullName != xllfi.FullName)
                    {
                        addin.Installed = false;
                        File.Delete(addin.FullName);
                        Console.WriteLine("removed old xll complete...");
                    }
                    else
                    {
                        if (addin.Installed = false)
                        {
                            addin.Installed = true;
                            flag = true;
                            Console.WriteLine("keep xll complete...");
                        }
                    }
                }
            }
            if (!flag)
            {
                xlsApp.DefaultFilePath = xllfi.DirectoryName;
                var addin = xlsApp.AddIns.Add(xllfi.FullName, false);//大部分此步骤报错的
                addin.Installed = false;
                addin.Installed = true;
                Console.WriteLine("install xll complete...");
            }
            xlsApp.Quit();
            if (xlsApp != null)
            {
                Marshal.ReleaseComObject(xlsApp);
            }
        }
        catch (Exception ex)
        {
            if (xlsApp != null)
            {
                Console.WriteLine(ex.StackTrace);
                Marshal.ReleaseComObject(xlsApp);
            }
        }
    }
}

 

标签:插件,false,addin,C#,EXCEL,Installed,xlsApp,true,xllfi
From: https://www.cnblogs.com/NanShengBlogs/p/18665836

相关文章

  • ERROR 1040 (HY000): Too many connections
    连接数过多,导致连接不上数据库,业务无法正常进行该错误发生在有max_connections个客户连接了mysqld服务器,应该重启mysqld,用更大的max_connections变量值12345678#默认连接数mysql>showvariableslike '%max_connection%';+-----------------+-------+|......
  • 关于此题[ABC350E] Toward 0和[ABC188F] +1-1x2记忆化搜索的一些总结
    传送门1传送门2这两道题都有个特性,那就是数据范围到了\(10^{18}\),这会让我们想用记忆化搜索或者期望DP的想法望而却退但是实际上我们可以用map。有人会说,用map那时间上貌似也过不去啊!但是我们发现这两道题当中,我们可以进行的操作都有除法操作,这就有点像势能线段树,时间复杂度实......
  • Packet for query is too large . You can change this value on the server by setti
    如果写入大数据时,因为默认的配置太小,插入和更新操作会因为max_allowed_packet参数限制,而导致失败。mysql根据max_allowed_packet参数来限制server接受的数据包大小。当一个MySQL客户或mysqld服务器得到一个max_allowed_packet个字节长的包,它发出一个Packettoolarge错误并终......
  • 用C语言写一个简单的五子棋游戏,新手刚上路做的第一个小项目
    1/*23451.制作15*15的棋盘,放到二维数组中,制作成一个函数;62.for循环,输入坐标,结构分两部分,第一部分为甲,第二部分为乙7(1)根据坐标,指向棋盘的某个位置,更改常量,并刷新棋盘8(2)判断是否有重复下子,有刷新棋盘,并提示重新下子9(3)根据输入的坐标,判断横竖......
  • CheeseTools:红队内网横向
    免责声明仅限用于技术研究和获得正式授权的攻防项目,请使用者遵守《中华人民共和国网络安全法》,切勿用于任何非法活动,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律连带责任项目介绍这个库是基于已经存在的MiscTool制作的,所以非常感谢rasta-mo......
  • checkbox不绑定状态
    问题描述:在前台,把一个bool量绑定给一个checkbox,当后台的值变更后,前台的checkbox状态没有同步更新,而只是单纯得保留提交表单时得状态。重现步骤:1.利用VS创建一个asp.netcore6.0得项目。controller:publicIActionResultTestArrayData(RedcodeModelmodel)......
  • 【经典JESD204B ADC采集示例】基于FPGA的JESD204B ADC数据采集驱动源码(以AD9689为例)
    一、基础信息Ad9689是双通道ADC,分辨率14bit,最高采样率2Gsps/2.6Gsps;采用JESD204Bsubclass1协议,共8lanes串行接口输出;框图如下:在不同采样率下,不同输入频点的SFDR和SNR典型值:内部有可编程FIR滤波器,4个DDC:每个DDC包含一个48bitNCO实现混频,以及可编程的抽取速率;如此可......
  • 最新版Firefox浏览器加载ActiveX控件之SolidWorks 3D控件
     背景   SolidWorks ComposerPlayer是一个免费应用程序,它允许内容创作者将Composer内容分发给任何最终用户。ComposerPlayer与Composer一样具有高性能。ComposerPlayer绝不仅仅是一个简单的查看器,内容使用者可以在产品可交付内容中获得深入的互动体验。 ......
  • C++学习
    引入根据菜鸟教程学习,供自用打印helloworld#include<iostream>usingnamespacestd;intmain(){cout<<"HelloWorld"<<"\n";return0;}现象PSC:\Users\86177>cd"d:\DeskTop\cppstudy\";if($?){......
  • CAPL诊断功能实现
    CAPL诊断功能实现目录CAPL诊断功能实现1.引言2.UDS协议概述2.1UDS协议简介2.2UDS协议结构3.诊断服务实现3.1ReadDataByIdentifier服务3.2WriteDataByIdentifier服务4.诊断故障码处理4.1读取诊断故障码4.2清除诊断故障码5.案例说明5.1案例1:ReadDataByIden......