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

Mr.*_*Boy 3 .net interop ms-office

我一直认为它确实如此,虽然我不知道我的想法在哪里...我总是认为将电子表格视为2D阵列很容易,但有些搜索SO表明每个人都在使用3rd-党的图书馆?或者,所有那些需要安装不需要Office的解决方案的人......如果我没有这个限制,它会变得更容易吗?

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

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

小智 7

是的,.NET具有内置的Office功能.但是你会试图用它来打败自己.它也很好地隐藏,只与Office 2007及更高版本兼容(除非您下载Office 2003/XP 的兼容性插件).

最好使用一些旨在与Office互操作的API,而不是试图单独使用它.链接用于Office Open XML SDK,可用于创建.*x Office文件(.docx,.xslx等).


如果您想知道System.IO.Packaging如何与Office相关,则文档跟踪从此处开始:

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

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

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

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

现在,虽然您可以使用命名空间轻松完成此操作,但您无法安全访问Open XML文件中的不同包.你必须使用魔法字符串来获取部分.这也意味着你几乎必须知道Open XML架构,这很糟糕.

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

添加我的第一个链接与我的第二个链接,你得到原始问题的答案.


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

如果您要打开Office 2007兼容文件,我强烈建议您查看Office Open XML SDK.如果您打算打开旧版本(Office 2003,XP),我建议在codeplex.com 上使用Excel中的众多项目之一(我我已经使用了Excel数据读取器).其中有很多,旨在使Excel电子表格中的数据访问变得非常容易.但不太相称表格[x] [y]容易.

  • 好吧,既然你对包装命名空间中的实际内容一无所知,我就能理解你的来源.但是,由于我还链接到互操作程序集(当然,它们基于System.Packaging但提供对包部件的类型安全访问),你不可能声称我的答案没有帮助.事实上,它有点像你的家伙. (2认同)