.net - 那么,.NET 没有内置的 Office 功能吗?

标签 .net interop ms-office

我一直认为它确实如此,尽管我不知道我从哪里得到的想法......例如,我一直认为将电子表格视为二维数组很容易,但是对 SO 的一些搜索表明每个人都在使用第三个-派对图书馆?或者,是否所有需要不需要安装 Office 的解决方案的人...如果我没有这个限制,它会变得更容易吗?

正如我所说,我查看了 SO,但没有看到这个特定问题的答案。然而,也许我的搜索技巧很糟糕......

编辑:这个想法是我想在 C# 应用程序中打开一个 XLS/CSV 文档。我不想要来自单元格的任何复杂数据,只需能够从每个单元格读取文本值。理想情况下,使用 Cell.getText() 方法将电子表格视为二维单元格数组的包装器就是我需要的全部复杂性。

最佳答案

Yes, .NET has built-in Office functionality .但是你会在尝试使用它时打败自己。它也隐藏得很好,只与 Office 2007 兼容。和更高版本(除非您下载 Office 2003/XP 的兼容性插件)。

更好用 some of the APIs designed to interoperate with Office而不是试图一个人去。链接适用于 Office Open XML可用于创建 .*x Office 文件(.docx、.xslx 等)的 SDK。

如果您想知道 System.IO.Packaging 与 Office 的关系,文档路径从这里开始:

http://msdn.microsoft.com/en-us/library/dd371623(VS.85).aspx

简写版本是新的办公格式是Open XML documents .什么是 Open XML 文档?它们是包含在 ZIP 文件中的资源包(例如图像)和 XML 文件。您可以使用任何新的 Office 文件,将扩展名更改为 .zip,然后打开它们进行查看。

这是什么意思?这意味着您可以解压缩这些文件,将这些部分加载为 XDocuments 并前往镇上。当然,您必须将文件解压缩到一个临时位置,对多个 XML 文件进行排序以找到您想要的文件,在更改文件时管理文件之间的所有连接,等等。

或者,您可以使用 System.IO.Packaging 命名空间及其类型来打开这些文件、访问包中的不同组件(甚至远程)、更改它们并将更改刷新回磁盘。

现在,虽然您可以使用命名空间轻松完成此操作,但您无法对 Open XML 文件中的不同包进行类型安全访问。您必须使用魔术弦才能取出零件。这也意味着您几乎必须了解 Open XML 模式,这很糟糕。

这就是 MS 提供 Open XML SDK 的原因,您可以将其与 System.IO.Packaging 结合使用来打开、更改和保存 Open XML 办公文档。

添加我的 first link和我的 second link你会得到原始问题的答案。

要回答 OP 的澄清,这不会那么容易。 xls 文件很复杂;细胞不仅仅是一个二维数组。但是有免费的 API 可以帮助您打开和访问其中的数据。

如果您希望打开与 Office 2007 兼容的文件,我强烈建议您查看 Office Open XML SDK。如果您想打开旧版本(Office 2003、XP),我建议您使用 codeplex.com 上的众多 Excel 项目之一(我想我已经使用了 Excel Data Reader )。其中有很多,旨在使访问 Excel 电子表格中的数据变得非常容易。但不是很容易 sheet[x][y] 。

关于.net - 那么,.NET 没有内置的 Office 功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1405201/

相关文章:

vba - 如何在 Excel 2007 VBA 中以编程方式卡住 Excel 工作表的顶行?

c# - 方法适用于模拟器但不适用于 Microsoft Surface 设备?

.net - 在 csproj 文件中多目标时构建错误

c# - 声明指向类定义结构的指针,其中类是通用的

.net - .NET 中的 CUDA 全局内存释放问题

ruby - 如何用ruby解析word文档?

c# - 是什么将 IsFaulted 设置为 false?

c# - 使用 NPOI 将超链接从一个单元格复制到另一个单元格

c# - 奇怪的 handle 泄漏

java - 如何使用 Java 根据 wml.xsd 验证 Word 2007 文件?