我是新手,当我尝试在一行中添加多个单元格时,它说有不可读的内容。 这就是我所拥有的。 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。 我被困在细胞配方中。 我的代码如下: 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;
我正在使用.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; […]
我希望这可以帮助我,至少,回答我在这里提出的两个问题之一,但我正在寻找如何在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文件中的文本字符串而不在该机器上安装word?
我正在向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文档生成项目需要文本,表格和图像。 但首先, 我需要一个带有徽标(图像)的文档标题。 我已经使用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格式的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电子表格文档作为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 […]
我创建了一个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(); […]