Tag: openxml

OpenXML从Worksheet获取工作表名称

我正在迭代我的工作表 WorkbookPart wbPart = doc.WorkbookPart; SharedStringTablePart sstPart = wbPart.GetPartsOfType().First(); SharedStringTable sst = sstPart.SharedStringTable; foreach (var wsp in wbPart.WorksheetParts) { Worksheet ws = wsp.Worksheet; // i want to do something like this if (ws.Name == “People_Sheet”) { } } 我需要知道我正在处理哪张纸,所以我可以用不同的方式处理它。 如何获取工作表的名称(当我从excel中打开它时显示)? 如果我得到一张表单,我可以通过属性找到它 doc.WorkbookPart.Workbook.Sheets.ToList().ForEach(x => Console.WriteLine(x.GetAttribute(“name”, “”).Value)); 但是工作表和工作表之间的关系是什么? 如何从工作表中获取相应的工作表或工作表名称? 更新: 所以我确实找到并尝试了如何使用OpenXML从excel表中检索Tab名称 但是,sheetName与工作表不匹配。 foreach (var wsp in wbPart.WorksheetParts) […]

在Windows Phone 8中以编程方式(逐个单元格)读取/导入现有Excel文件

我正在使用Windows Phone 8应用程序来读取/写入Excel文件。 我在这里问了一个问题和提供的评论以及许多其他链接让我转向OpenXml 。 所有这些让我对如何创建 Excel文件以及如何启动它有了很好的了解。 但是现在我陷入了这些所有的基本问题,即如何读取现有的Excel文件(可能是使用MS Excel在外部创建)逐个单元格,即我想通过我的代码访问每个单元格及其值。 在openXML中我做了这个: Stream localFile = App.GetResourceStream(new Uri(“/ReadExcel;component/jai.xlsx” ,UriKind.Relative)).Stream; MemoryStream ms = new MemoryStream(); localFile.CopyTo(ms); DocumentFormat.OpenXml.Packaging.SpreadsheetDocument spreadsheetDoc = DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(localFile, true); { var a = spreadsheetDoc.Package; // Do work here } 但它给了我错误: The type ‘System.IO.Packaging.Package’ is defined in an assembly that is not referenced. You must add a reference […]

打开xml sdk excel公式重新计算缓存问题

我已经查看了之前所有类似问题的答案,但这些答案都不起作用。 我传入excel中的值,并希望公式单元格重新计算,但它仍然显示旧的值。 我使用了2种技术1)从单元格中删除计算出的值2)以编程方式打开和关闭文件。 它们都不适合我。 这是我的代码。 请帮忙。 string filename = Server.MapPath(“/”) + “ExcelData.xlsx”; // getting 2 numbers in excel sheet, saving, and closing it. using (SpreadsheetDocument document = SpreadsheetDocument.Open(filename, true)) { Sheet sheet = document.WorkbookPart.Workbook.Descendants().SingleOrDefault(s => s.Name == “myRange1”); if (sheet == null) { throw new ArgumentException( String.Format(“No sheet named {0} found in spreadsheet {1}”, “myRange1”, […]

Word OpenXML。 遍历书签之间的OpenXmlElements

我需要遍历书签开始和书签结束标记之间的节点。 问题似乎分解为树遍历,但我无法确定正确的算法。 书签开始和结束元素是非复合节点(没有子节点),并且可以出现在树中的任意深度处。 书签开始也不能保证在同一深度。 如果您绘制文档的树结构,我想检查开始和结束书签之间的所有节点。 我认为用于遍历从节点x开始到节点y结束的不平衡树的算法将起作用。 这听起来可行还是我错过了什么。 如果这是可行的,你可以指向我可以完成返回节点的树遍历的方向吗?

如何使用OpenXml将外部图像添加到Word文档?

我正在尝试使用C#和Open XML将图像从url插入到doc中。 图像可能会更改,因此我不想下载它,我希望它保留为外部参考。 我发现了几个像这样的例子,允许我添加一个本地图像: http://msdn.microsoft.com/en-us/library/bb497430.aspx 我如何调整它以获取URI? 或者还有另一种方法吗?

将Open XML Excel文件转换为HTML

我正在为MS Office 2007开发打印解决方案。办公自动化不适合我,因为它需要安装Office。 Open XML Document Viewer是通过XSLT转换将Word文件(.docx)转换为HTML格式的解决方案,但它仅适用于.docx。 可以将相同的技术用于Excel电子表格文件吗?

如何将内容放在docx的合并域中

我正在使用asp.net开发一个Web应用程序,我有一个名为Template.docx的文件,它像模板一样生成其他报告。 在这个Template.docx中,我有一些MergeFields(Title,CustomerName,Content,Footer等)来代替C#中的一些动态内容。 我想知道,如何将内容放在docx的合并域中? 我不知道MergeFields是否是正确的方法,或者是否有另一种方式。 如果你能建议我,我很感激! PS:我的web应用程序中引用了openxml。 编辑: private MemoryStream LoadFileIntoStream(string fileName) { MemoryStream memoryStream = new MemoryStream(); using (FileStream fileStream = File.OpenRead(fileName)) { memoryStream.SetLength(fileStream.Length); fileStream.Read(memoryStream.GetBuffer(), 0, (int) fileStream.Length); memoryStream.Flush(); fileStream.Close(); } return memoryStream; } public MemoryStream GenerateWord() { string templateDoc = “C:\\temp\\template.docx”; string reportFileName = “C:\\temp\\result.docx”; var reportStream = LoadFileIntoStream(templateDoc); // Copy a new file […]

生成Open XML Word文档后自动更新公式字段

我有一个使用OpenXML SDK生成Word文档的库,该库的一个function是生成最后一行包含公式的表(例如SUM(ABOVE) )。 Word具有内置的这些function,但在生成文档时,我必须假设Word未安装在计算机上。 问题是,如果我只生成表和公式字段,则在打开文档时不会自动更新,用户必须打开文档并手动为要计算的函数选择“更新字段”。 有没有办法在代码中执行此操作(无需手动计算function)?

使用C#和Powerpoint OpenXML,可以更改文本的字体大小和颜色

我使用openXML和C#生成powerpoint幻灯片,但我似乎无法弄清楚如何更改/设置文本大小和颜色。 这是可能的,有没有任何例子,因为我似乎找不到用谷歌搜索? 我正在构建一个表(类似于这个: http : //blogs.msdn.com/b/brian_jones/archive/2009/08/13/adding-repeating-data-to-powerpoint.aspx )我想改变每个单元格中的许多内容(字体大小,字体颜色,单元格的背景颜色)。

在word文档中编辑自定义XML部分有时会破坏文档

我们有一个系统可以在Word文档中存储一些自定义模板数据。 有时,更新此数据会导致Word抱怨文档已损坏。 发生这种情况时,如果我解压缩docx文件并将内容与先前版本进行比较,则唯一的区别似乎是customXML\item.xml文件中的预期更改。 如果我使用7zip重新压缩内容,它似乎工作正常(Word不再抱怨文档已损坏)。 (简化)代码: void CreateOrReplaceCustomXml(string filename, MyCustomData data) { using (var doc = WordProcessingDocument.Open(filename, true)) { var part = GetCustomXmlParts(doc).SingleOrDefault(); if (part == null) { part = doc.MainDocumentPart.AddCustomXmlPart(CustomXmlPartType.CustomXml); } var serializer = new DataContractSerializer(typeof(MyCustomData)); using (var stream = new MemoryStream()) { serializer.WriteObject(stream, data); stream.Seek(0, SeekOrigin.Begin); part.FeedData(stream); } } } IEnumerable GetCustomXmlParts(WordProcessingDocument doc) { […]