我创建了一个带有按钮的Web部件,该按钮一旦单击就会生成一个包含特定列表的列表项值的word文档。 我希望能够更改文档的边距(顶部,底部边距),但我不确定如何继续。 任何人都可以阐明如何实现这一目标吗? 到目前为止,我的代码如下: void GenerateBadges_Click(object sender, EventArgs e) { string Title = null; string jobTitle = null; WordprocessingDocument document = WordprocessingDocument.Create(@”C:\sample- badges.docx”, WordprocessingDocumentType.Document); MainDocumentPart mainDocumenPart = document.AddMainDocumentPart(); mainDocumenPart.Document = new Document(); Body documentBody = new Body(); mainDocumenPart.Document.Append(documentBody); SPWeb web = SPContext.Current.Web; SPList list = web.Lists[“SampleList”]; SPListItemCollection collListItems = list.Items; //getting the internal name for […]
我是新手,当我尝试在一行中添加多个单元格时,它说有不可读的内容。 这就是我所拥有的。 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 […]
我正在使用.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; […]
使用C#,有没有一种很好的方法来查找和替换docx文件中的文本字符串而不在该机器上安装word?
任何人都可以解释OpenXml中的样式索引如何工作? 我有业务需求,我需要将背景颜色应用于Excel工作表中的某些单元格。 并且某些样式已经应用于其他单元格。 所以我需要决定我需要应用哪种样式的索引。
我正在向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 = […]
我正在尝试将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(); […]
如何使用C#中的OpenXML为单词中的段落设置从右到左的方向? 我使用下面的代码来定义它,但它们不会做任何改变: RunProperties rPr = new RunProperties(); Style style = new Style(); style.StyleId = “my_style”; style.Append(new Justification() { Val = JustificationValues.Right }); style.Append(new TextDirection() { Val = TextDirectionValues.TopToBottomRightToLeft }); style.Append(rPr); 最后我将为我的段落设置这种风格: … heading_pPr.ParagraphStyleId = new ParagraphStyleId() { Val = “my_style” }; 但是看到输出文件没有变化。 我找到了一些post,但他们根本没有帮助我,比如: 更改word文件中的文本方向 怎么能解决这个问题? 提前致谢。