Tag: openxml

将多个单元格添加到单个行

我是新手,当我尝试在一行中添加多个单元格时,它说有不可读的内容。 这就是我所拥有的。 SpreadsheetDocument ssDoc = SpreadsheetDocument.Create(saveFile, SpreadsheetDocumentType.Workbook); // Add a WorkbookPart to the document WorkbookPart workbookPart = ssDoc.AddWorkbookPart(); workbookPart.Workbook = new Workbook(); // Add a WorksheetPart to theWorkbookPart WorksheetPart worksheetPart = workbookPart.AddNewPart(); worksheetPart.Worksheet = new Worksheet(new SheetData()); Sheets sheets = ssDoc.WorkbookPart.Workbook.AppendChild(new Sheets()); Sheet sheet = new Sheet() { Id = ssDoc.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name […]

EPPlus不会在绑定后计算公式输出

我正在使用EPPlus。 我被困在细胞配方中。 我的代码如下: ExcelPackage pck = new ExcelPackage(@”D:\MYSheets\EmptyFile.xlsx”); var ws = pck.Workbook.Worksheets[“MySheet”]; ws.Cells[“A3”].Value = “2.3”; ws.Cells[“A4”].Value = “10.2”; ws.Cells[“A5”].Formula = “=SUM(A3:A4)”; ws.Cells[“A5”].Style.Numberformat.Format = “#,##0.00”; pck.Save(); 当我打开Excel时,默认情况下,A5单元格不计算A3和A4的总和。 除非我修改A3和/或A4单元格,否则A5单元格仍未计算。 我尝试使用以下代码,但它对我不起作用: ws.Workbook.CalcMode = ExcelCalcMode.Automatic;

如何使用OpenXML Sdk替换Paragraph的文本

我正在使用.Net OpenXml SDK 2.0解析一些Openxml word文档。 作为处理的一部分,我需要用其他句子替换某些句子。 在迭代段落时,我知道当我找到需要替换的东西时,但我很难过如何替换它。 例如,假设我需要替换”a contract exclusively for construction work that is not building work.”这句话”a contract exclusively for construction work that is not building work.” 使用html片段到下面的Sharepoint可重用内容。 a contract exclusively for construction work that is not building work. PS:我使用xslt得到了docx到Html的转换,所以在这个阶段这不是问题 Paragraph节点的InnerText属性为我提供了正确的文本,但内部文本属性本身不可设置。 所以Regex.Match(currentParagraph.InnerText, currentString).Success返回true并告诉我当前段落包含我想要的文本。 正如我所说,InnerText本身不可设置,所以我尝试使用outerxml创建一个新的段落如下。 string modifiedOuterxml = Regex.Replace(currentParagraph.OuterXml, currentString, reusableContentString); OpenXmlElement parent = currentParagraph.Parent; […]

OpenXML / EPPlus – 在.Net中创建PivotCache

我希望这可以帮助我,至少,回答我在这里提出的两个问题之一,但我正在寻找如何在EPPlus / OpenXML中创建一个PivotCache,并且无法在他们的文档中找到任何显示如何做到这一点。 所以,假设我有一张Excel工作表,在wksRawData创建了wksRawData,我想根据wksRawData.Cells(wksRawData.Dimension.Address)的数据透视表创建一个带有数据透视表的第二张工作表 – 希望我能删除wksRawData但仍保留数据透视表。 我该怎么办? 到目前为止,我在第二个工作表中创建数据透视表的代码是: Dim wksRawData As ExcelWorksheet = wbk.Worksheets(“Raw Data”) Dim wksPvtTbl As ExcelWorksheet = wbk.Worksheets(“PivotTbl”) ‘ Insert the Pivot Table to the sheet Dim DataRange As ExcelRange = wksRawData.Cells(wksRawData.Dimension.Address) Dim pvtTable As OfficeOpenXml.Table.PivotTable.ExcelPivotTable = wksPvtTbl.PivotTables.Add(wksPvtTbl.Cells(“B4”), DataRange, “MyPivotTable”) pvtTable.Compact = True pvtTable.CompactData = True pvtTable.Outline = True pvtTable.OutlineData = True […]

C#用于替换docx中的文本字符串

使用C#,有没有一种很好的方法来查找和替换docx文件中的文本字符串而不在该机器上安装word?

为什么我的自定义XML在Word保存时不会转移到新版本的DOCX文件?

我正在向docx添加一些自定义XML,以便在我正在编写的应用程序中跟踪它。 我通过ZIP库打开Word文档,并通过官方Open XML SDK路由手动完成它。 两者都有相同的结果,我的XML被插入到文档中的customXml文件夹中。 对于这两种方法,Word中的文档打开正常,并且XML存在。 但是,当我将文档保存为MyDoc2.docx时,例如我的所有XML都消失了。 我究竟做错了什么? Microsoft链接我一直关注: http://msdn.microsoft.com/en-us/library/bb608597.aspx http://msdn.microsoft.com/en-us/library/bb608612.aspx 我从Open XML SDK 2.0中获取的代码: public static void AddNewPart(string document, string fileName) { using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(document, true)) { MainDocumentPart mainPart = wordDoc.MainDocumentPart; CustomXmlPart myXmlPart = mainPart.AddCustomXmlPart(CustomXmlPartType.CustomXml); using (FileStream stream = new FileStream(fileName, FileMode.Open)) { myXmlPart.FeedData(stream); } } } 谢谢,约翰

如何将图像插入OpenXML Word文档的标题?

我的OpenXML Word文档生成项目需要文本,表格和图像。 但首先, 我需要一个带有徽标(图像)的文档标题。 我已经使用Microsoft示例通过使用Open XML SDK 2.0 for Microsoft Office在Word 2007中使用页眉和页脚生成文档创建页眉和页脚,文本标题工作正常,但图像显示在标题中损坏的图像图标, 正确大小的边框 ,以及消息“此图像当前无法显示”。 此外,我可以将选定的图像加载到文档正文中。 以下是我创建ImagePart的方法: // Create AG logo part. _agLogoPart = mainDocumentPart.AddImagePart(ImagePartType.Jpeg); using (FileStream stream = new FileStream(_agLogoFilename, FileMode.Open)) { _agLogoPart.FeedData(stream); } _agLogoRel = mainDocumentPart.GetIdOfPart(_agLogoPart); 使用从Microsoft示例派生的LoadImage方法加载图像,但添加宽度和高度参数,并返回Drawing对象: private static Drawing LoadImage(string relationshipId, string filename, string picturename, double inWidth, double inHeight) { double emuWidth = […]

使用XML直接签署Office Word文档

我正在尝试使用直接XML格式的C#签署Microsoft Office Word文件。 这里有一些问题和模棱两可的问题,例如: 我应该如何填写摘要值,我应该为每个参考准确消化什么值,以及我应该为每个转换消化什么值? 我应该签署什么价值来创建SignatureValue ? 我应该在x509数据中包含哪些证书以及如何? (我们没有确切的证书,所以我们非常感谢您创建一个证书。) 最后一个问题是我正确地这样做了吗? 也许这里有什么问题,我错过了一个软件包,否则它本身会与openxml文件交互并签名。 但请记住,我实际上是尝试使用外部令牌签署数据,该外部令牌具有可用的pkcs11接口(但没有CSP),所以我使用了PKCS11 Interop库将其迁移到c#,但我在这里仍然有点困惑。 有没有我可以用来签署word文档的包? 或者是否有一个简化openXML交互的软件包? 或者我必须手动完成吗? 只是为了抬头任何执行openXML交互的库也应该允许我使用pkcs11命令对文档进行签名(即,它给我字节流来签名和消化,但是其他部分本身,pkcs11真的不应该被认为是重要的在这里(你可以用我的自定义算法替换它)) BTW中的签名构建器如下所示: YYYY-MM-DDThh:mm:ssTZD 2015-11-22T17:21:28Z TEST SIGNING 10.0 15.0 15.0 1 1920 1080 32 {00000000-0000-0000-0000-000000000000} 9 1 2015-11-22T17:21:28Z E=ali@ali.com, CN=ALI-PC, OU=ALI-PC, O=ALI-PC, L=ALI-PC, S=ALI-PC, C=98 1 http://uri.etsi.org/01903/v1.2.2#ProofOfOrigin Created and approved this document TEST SIGNING

openXML spreadsheetdocument返回MVC文件下载的字节数组

我正在尝试将openXML电子表格文档作为byte []返回,然后我可以使用它来允许我的MVC将该文件发送给用户。 这是我的spreadsheetdocument方法返回字节数组 using (MemoryStream mem = new MemoryStream()) { SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument. Create(mem, SpreadsheetDocumentType.Workbook); // Add a WorkbookPart to the document. WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart(); workbookpart.Workbook = new Workbook(); // Add a WorksheetPart to the WorkbookPart. WorksheetPart worksheetPart = workbookpart.AddNewPart(); worksheetPart.Worksheet = new Worksheet(new SheetData()); // Add Sheets to the Workbook. Sheets sheets […]

OpenXml表错误“每个之前需要元素”

我创建了一个Word模板,然后我通过OpenXML SDK进行处理,用数据库查询中的数据替换文档的某些内容。 该模板由一些基本文本组成,其中纯文本内容控件注入我想要替换文本的位置。 然后我使用这些控件中的文本作为查找替换值的键。 在大多数情况下,这工作正常(我只是更新Text对象的Text属性)。 在一种情况下,我用表替换文本。 在这种情况下,我在代码中构建一个表,然后用新的Table对象替换SdtContentRun对象的内容(Run对象的父对象,后者又是Text对象的父对象)… var sdtContentRunElements = from sdtContentRun in this.Document.MainDocumentPart.RootElement.Descendants() select sdtContentRun; sdtContentRunElements.ForEach(sdtContentRunElement => { Run firstRunElement = sdtContentRunElement.Descendants().FirstOrDefault(); if (firstRunElement != null) { Text firstTextElement = firstRunElement.Descendants().FirstOrDefault(); if (firstTextElement != null) { switch (firstTextElement.Text) { case TableBookmark: Table advisoryTable = new Table(…); // See below OpenXmlElement parent = firstRunElement.Parent; parent.RemoveAllChildren(); […]