我正在try 将大约VBA个代码转换成C#.我是C#的新手.目前,我正在try 从文件夹中打开Excel文件,如果该文件不存在,则创建它.我正在try 下面这样的东西.我怎么才能让它工作呢?

Excel.Application objexcel;
Excel.Workbook wbexcel;
bool wbexists;
Excel.Worksheet objsht;
Excel.Range objrange;

objexcel = new Excel.Application();
if (Directory("C:\\csharp\\error report1.xls") = "")
{
    wbexcel.NewSheet();
}

else
{
    wbexcel.Open("C:\\csharp\\error report1.xls");
    objsht = ("sheet1");
}
objsht.Activate();

推荐答案

您需要安装Microsoft Visual Studio Tools for Office(VSTO).

可以在Visual Studio安装程序中的工作负荷>;Web&;Cloud>;Office/SharePoint Development下 Select VSTO.

之后,创建一个通用.NET项目,并通过"添加引用.>;程序集"对话框添加对Microsoft.Office.Interop.Excel的引用.

Application excel = new Application();
Workbook wb = excel.Workbooks.Open(path);

Missing.Value是一种特殊的反射 struct ,用于替换不必要的参数


在较新的版本中,所需的程序集引用称为Microsoft Excel 16.0 Object Library.如果没有安装最新版本,则可能会安装Microsoft Excel 15.0 Object Library或更旧的版本,但包含的过程相同.

enter image description here

.net相关问答推荐

删除数据库项目中的表

在 F# 中处理 Option - Some(null) 的好策略是什么

.net Maui 在单击按钮时访问 CollectionView 中的数据项

如何调试 .NET 运行时中的内部错误?

为什么 .net 对字符串使用 UTF16 编码,但默认使用 UTF-8 来保存文件?

在 C# 中获取 log4net 日志(log)文件

在 .NET 中获取执行 exe 路径的最佳方法是什么?

如何在 EF 代码优先中禁用链接表的级联删除?

SubscribeOn 和 ObserveOn 有什么区别

从 Web.Config 中的邮箱友好显示名称存储 Smtp

运算符重载 ==, !=, Equals

如何让 .NET 的 Path.Combine 将正斜杠转换为反斜杠?

如何使用配置转换删除 ConnectionString

解密 .NET clr20r3 异常参数 P1..P10

Visual Studio 2017 和 2019 突出显示滚动条中所选单词的出现

对构造函数进行单元测试重要吗?

使用没有catch块的try-finally块

.NET 中的 java.lang.IllegalStateException?

当它被抛出和捕获时,不要在那个异常处停止调试器

如何在我的机器上找到 fuslogvw.exe?