visual-studio - 使用 F# 自动化 Excel 2010

标签 visual-studio visual-studio-2010 excel f# excel-2010

我一直在寻找常见问题解答,告诉我如何打开 Excel 工作簿/工作表以及如何在完成后保存文件。

我注意到,在大多数常见问题解答和我在 F# 上购买的所有书籍中,都展示了如何创建新的工作簿/工作表,但从未展示如何打开或保存它。

作为 F# 的新手,如果有人能给我一个答案或者一些建议,我将非常感激?

更新

至于为什么是 F# 而不是 C# 或 VB?

我很高兴地说,尽管我是新手(Forth、VBA 和 Excel 2003、2007 和 2010 以及 Visual Basic 除外),但我可以在 VB、VBA 和 C# 中完成此操作,因为我一直在由于医疗原因退休了,不幸的是我手头有很多时间,我喜欢不断地给自己设定挑战,以保持我的小灰细胞活跃,并成为尝试新语言的傻瓜......好吧!

F# 现在是 Visual Studio 2010 不可或缺的一部分,所以我想 - 为什么不呢。考虑一下这一点 - 如果我们不愿意使用或至少尝试一种新语言 - 我总是想知道我是否可能更喜欢它而不是 VBA、VB、C# ..... 如果你从另一个角度来看它 View ,如果没有人会使用它 - 为什么首先要创建它?我想你可以说,如果穴居人没有尝试通过将两根棍子摩擦在一起生火——我们现在会在哪里,火柴会被发明吗?

虽然完整的答案很好,但我更喜欢一些提示,以继续我的挑战。

最后但并非最不重要的一点 - 感谢您不厌其烦地回复!

最佳答案

我不认为它们是 Office 的特定 F# 库,因此您只需使用与 VB.NET/C# 中使用的完全相同的 .NET 库。 F# 是一种 .NET 语言,因此可以在 C# 中完成的任何操作都可以在 F# 中完成(但您可能已经知道了:))。 API 调用将完全相同,只是它们将使用 F# 语法而不是 VB/C# 语法完成。例如,看起来像这样的东西

public void SaveMyWorkbook() {
    string filePath = @"C:\failworkbooks\catfail.xlsx";
    workbook.Save(filepath);
}

在 F# 中将表示为

let filePath = "C:\\failworkbooks\\catfail.xlsx";

let saveWorkbook() = workbook.Save(filePath) |> ignore //if the Save method return something

现在,您很快就会意识到,API 的设计初衷并不是为了从函数式语言中轻松使用。这是可以完成的,但这个任务尤其适合 C#/VB.NET。

如果你真的想享受F#,我建议你在它真正发挥优势的地方使用。我个人的经验是,当涉及大量数学时,函数式语言非常棒。如果您想在应用程序中轻松引入并行性,这也是很棒的(因为 F# 代码通常没有副作用)。因此,任何需要对大量数据进行数据处理的事情都是完美的。但对于主要包含对外部库的一堆 API 调用的任务,F# 有点乏味。您可以说 F# 有点像图形卡编程语言,而 C# 是通用 CPU 编程语言。很多东西在 C# 上运行得更好,但在 F# 上运行得更好的东西在 F# 上运行得确实更好。

但如果您确实想走这条路,我的建议是尝试使用您已经了解的 Office API,但使用 F# 语法。如果在某些时候您确实不知道如何执行特定任务,请使用您的代码在 stackoverflow 上提出有关该任务的问题,并明确您想要做的事情。与广泛的包罗万象的问题相比,这些问题的回答速度快得离谱,所以您不会等待太久。 (程序员似乎喜欢有具体答案的精确问题^^)

希望对您有一点帮助。

关于visual-studio - 使用 F# 自动化 Excel 2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4768454/

相关文章:

c++ - 相当于 __attribute__ 的 Visual Studio ((warn_unused_result))

c++ - 发布版本中运行时间过长(调试版本正常)

c# - 从 C# 启动 Excel 进入后台

excel - 根据另一个单元格中的条件将正数值单元格输入更改为同一单元格中的负数值

windows - Visual Studio 100% 磁盘使用率

visual-studio - 如何使用 Visual Studio 在一个实例中打开文件?

c++ - Windows服务和客户端教程?

C#:如何对依赖于同一类中另一个方法的方法进行单元测试?

.net - session 状态只能在配置中将enableSessionState设置为true时使用

VBA 类型不匹配错误 - 不一致