问题标签 [openxml-sdk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
10621 浏览

excel-2007 - 使用 OpenXML 的 Excel“全部刷新”

我有一个连接到 xml 文件的 excel 2007 文件(OpenXML 格式)。此连接会生成一个 Excel 表和数据透视图。

我正在尝试使用 OpenXML SDK v2 找到一种与 Excel 中的“全部刷新”按钮相同的方法。这样我就可以在提供新的 xml 文件后立即自动更新我的文件。

谢谢你。

0 投票
1 回答
970 浏览

c# - 将 TDD 与 OpenXml-SDK 一起使用

我已经开始使用 TDD 方法来开发一个从 Excel 文件中读取数据的小应用程序。使用存储库模式类型方法时,我遇到了一个令我困惑的障碍。

为了读取 Excel 文件,我使用了 OpenXml-SDK。现在,使用 SDK 从 Excel 文件中读取数据通常需要几个甚至更多的步骤才能实际获取您想要读取的值。

到目前为止,我采用的方法反映在以下测试和随附功能中。

但是,电子表格打开后的下一步将是实际开始询问 Excel 对象模型以检索值。如上所述,我对任何与开放 xml 相关的东西都使用了模拟。但是,在某些情况下,无法模拟对象(或者我不知道如何模拟它们,因为它们是静态的)。这导致了IOpenXmlUtilities对 OpenXml-SDK 的简单包装调用。

在设计方面,我们知道从 excel 文件中读取数据是一个短期解决方案(6-8 个月),因此这些测试暂时只影响存储库/数据访问。

显然,我不想离开 TDD 方法(尽管它很诱人),所以我正在寻找有关如何使用 OpenXml SDK 继续我的 TDD 努力的建议和指导。另一方面与模拟有关 - 在这种情况下,我对何时以及如何使用模拟感到困惑。我不想在不知不觉中编写测试 OpenXml-SDK 的测试。

*旁注:我知道我的设计的 SOLIDity 可以改进,但我暂时离开了。我有一组与builder对象相关的单独测试。可能发生的另一个副作用是 OpenXML-SDK 包装库的设计。

编辑:当时未知,通过为 OpenXML-SDK 创建 OpenXML-SDK 包装器,我使用了一种类似(或确切)的设计模式,称为适配器模式

0 投票
1 回答
387 浏览

c# - 是否有一个预期的功能可以使用 OpenXML 找出 C# 中图像的类型?

我陷入了位于“使用 OpenXML 替换 word doc 中的图像”的问题。我注意到有几种ImagePartType类型。除了通过扩展名之外,是否有任何简单的“内置”方法来确定特定图像应该是哪种类型?ImagePartType 枚举也用于 PowerPoint 中,就像许多 WordProcessingML 结构一样。

例如,ImagePartType.Bmp on image1.bmp
ImagePartType.Emf on image1.emf
ImagePartType.Gif on image1.gif ImagePartType.Icon on image1.ico ImagePartType.Jpeg on image1.jpeg 或 image1.jpg ImagePartType.Pcx on
image1.pcx ImagePartType .Png on
image1.png ImagePartType.Tiff on image1.tiff 或 image1.tif
ImagePartType.Wmf on image1.wmf

0 投票
1 回答
164 浏览

office-2007 - openXml2.0 图表生成是否兼容office 2007?

我没有做过任何 OpenXml,但是 OpenXml 的下载页面清楚地表明 1.0 与 office 2007 兼容。OpenXml 2.0 的下载页面根本没有指定任何 Outlook 版本。

如果我们只有 office 2007 或需要 office 2007 可查看/兼容,并且我正在考虑从 c# 代码在 Outlook 中生成图表,我可以继续使用 OpenXml 2.0 吗?有问题还是完全兼容?

0 投票
1 回答
1545 浏览

c# - 创建动态 Word 文档时更新图表数据

我们有一个需求,我们需要创建动态的word文档,这些word文档包含要动态替换/更新的表格、图表、文本和图像。所以我们决定创建一个模板并将文本持有者放置在动态位置。为了通过阅读和更新模板来创建新文档,我们决定使用 OpenXML SDK 2.0。

我能够成功地替换/更新文本/表格和图像内容(对于占位符标记,我们使用的是内容控件,并且我们为每个内容控件分配了一个唯一的标签。)

我仍在试图弄清楚,我们将如何修改图表数据。据我了解图表部分,它有自己的底层 xlx 数据文件,其中存储数据。所以现在要更新图表部分,我可以想到三种不同的解决方案。

1.) 使用 Open SDK 更新底层 xlx 文件。我不确定这是否可以完成,但考虑到它只是一个 xlx 文件,所以我应该能够使用 Open XML Sdk 本身对其进行修改。

2.)创建图表,转换为图像,然后替换图像。

3.) 我还阅读了有关自定义 XML 的内容,我们可以在其中将内容控件与该 XML 绑定。所以想法是创建一个以自定义 XML 作为数据源的图表,然后动态更新数据 xml。

任何建议或代码示例将不胜感激。我正在使用 Open XML SDK 2.0。

0 投票
2 回答
4235 浏览

image - 如何从 ASP.net 输出带有图像的 Excel 电子表格

假设我正在编写一个 ASP.net Web 应用程序。

该应用程序的原始设计者使用“PopChart”使一些图像出现在 Web 应用程序中。其中一页上有一个“导出到 Excel”按钮。单击按钮时,页面内容将输出到 Excel,如本教程所示:http ://aspalliance.com/articleViewer.aspx?aId=1&pId= 。

基本上,它将 HTML 输出到 XLS 文件,Excel 对其进行解释。问题是,我需要摆脱 PopChart。我已将其替换为输出 PNG 文件的 Web 控件(顺便说一下,可以MemoryStream在运行时将其保存在对象中)。PopChart 引用了一个从公共服务器运行的 flash 组件;“PopChart”上的数据嵌入在 HTML 中。

但是,一旦我开始使用输出 PNG 的 Web 控件,所有数据都在一个 PNG 文件中。我看不到有任何方法可以用 HTML 输出 PNG 文件。我尝试将数据嵌入到 中img src=...,但 Excel 不会解释它。Excel 也不能从服务器下载 PNG 文件;服务器被锁定,Excel 无法访问浏览器会话。

我能做些什么?

更新:我在 MSDN 论坛上找到了以下代码示例:

此代码用于创建一个新的 Excel 电子表格,其中嵌入了图像。但是,我无法修改此代码以将图像放置在电子表格上我想要的位置。(是的,我确实尝试过更改偏移量的值。)我也没有成功地将任何文本或数字数据添加到行和列中。

这里有人让这个工作吗?

0 投票
1 回答
986 浏览

openxml - 使用 Open XML 过滤表列的内容

我需要使用 openxml sdk 过滤表列的内容(在 MS-word 文档中)。我可以使用获取表格列内容(作为字符串) reference = tablerow.ElementAt<OpenXmlElement>(0).InnerText

我需要做的是将列的内容拆分为多个字符串,例如:列

我正在abcdefgh参考使用reference = tablerow.ElementAt<OpenXmlElement>(0).InnerText

我需要的是拆分abcdefgh不同的字符串。

这是我正在使用的一段代码:

0 投票
1 回答
4354 浏览

.net - OpenXML 更新 customXMLPart

我一直在使用 OOXML api 来更新 .docx 中的自定义 xml 部分。代码更新文档中的自定义 xml 部分。我的问题是,当我在控制台应用程序中使用时,相同的代码会替换并生成完美的 .docx,但在 ASP.NET 应用程序中使用时它不会替换或生成 .docx。有问题的代码片段如下:

我很清楚为什么会发生这种情况。感谢任何帮助谢谢

0 投票
2 回答
15448 浏览

c# - 如何使用 OpenXML Sdk 替换段落的文本

我正在使用 .Net OpenXml SDK 2.0 解析一些 Openxml Word 文档。作为处理的一部分,我需要用其他句子替换某些句子。在遍历段落时,我知道何时找到需要替换的内容,但我对如何替换它感到困惑。

例如,假设我需要"a contract exclusively for construction work that is not building work."用 html 片段将句子替换为下面的 Sharepoint Reusable 内容。

<span class="ms-rtestate-read ms-reusableTextView" contentEditable="false" id="__publishingReusableFragment" fragmentid="/Sites/Sandbox/ReusableContent/132_.000" >a contract exclusively for construction work that is not building work.</span>

PS:我使用 xslt 完成了 docx 到 Html 的转换,所以在这个阶段这不是问题

Paragraph 节点的 InnerText 属性为我提供了正确的文本,但内部文本属性本身不可设置。所以 Regex.Match(currentParagraph.InnerText, currentString).Success 返回 true 并告诉我当前段落包含我想要的文本。

正如我所说,InnerText 本身是不可设置的,所以我尝试使用下面给出的 outerxml 创建一个新段落。

尽管我不太关心这个级别的格式并且它似乎没有任何格式,但 outerXML 似乎有额外的元素破坏了正则表达式。

..."16" /><w:lang w:val="en-AU" /></w:rPr><w:t>a</w:t></w:r><w:proofErr w:type="gramEnd" /> <w:r w:rsidRPr="00C73B58"><w:rPr><w:sz w:val="16" /><w:szCs w:val="16" /><w:lang w:val="en-AU" /></w:rPr><w:t xml:space="preserve"> contract exclusively for construction work that is not building work.</w:t></w:r></w:p>

所以总而言之,我将如何用其他文本替换 OpenXml 段落中的文本。即使以丢失一些格式为代价。

0 投票
1 回答
5547 浏览

c# - 使用 Open XML 插入工作表 - “...不可读的内容...”

当我按照本教程进行操作时:

http://msdn.microsoft.com/en-us/library/cc881781.aspx

打开一个 Excel 文档并插入一个空工作表,最终结果是一条消息,告诉“Excel 在...中找到不可读的内容...您要恢复此工作簿的内容...”。如果我恢复所有插入的工作表都是空白的(即使我以编程方式添加内容)

将 xlsx 重命名为 .zip 并检查后显示工作表已创建并添加了内容。

有任何类似问题的人吗?可能是没有在新创建的部分之间建立关系......