Tag: openxml

更改OpenXML Word文档中的字体颜色(C#)

我一直在寻找几个小时,我似乎无法找到一个可靠的答案。 我有一个包含内容控件的现有文档,我需要使用外部数据编辑文本。 如果其中一个控件的数据不存在,那么我需要用适当的通知替换文本并更改字体颜色。 我有文本条目和所有工作正常,唯一似乎无法完成其工作的部分是更改字体颜色。 我当前的代码没有给我任何错误,并且正在运行这个方法就好了,但是当我查看完成的文档时,它仍然是纯黑色文本。 我的换色方法:(输入是具有相同标签的所有内容控件的列表) public void SetBlueText(List sdtElement) { foreach (SdtElement element in sdtElement) { if (element != null) { RunProperties runProperties = element.Descendants().FirstOrDefault(); runProperties.Color = new DocumentFormat.OpenXml.Wordprocessing.Color() { Val = “0EBFE9” }; } } } 此外,将这两行简化为此/具有相同的效果 element.Descendants().FirstOrDefault().Color = new DocumentFormat.OpenXml.Wordprocessing.Color() { Val = “0EBFE9” };

.NET OpenXML性能问题

我试图使用OpenXML从ASP.NET Web服务器写出一个Excel文件。 我有大约2100条记录,大约需要20-30秒才能完成。 我能以任何方式加快速度吗? 从db中检索2100行只需要几分之一秒。 不确定为什么在内存中操作它们会花费更长的时间。 注意:ExcelWriter是我们的自定义类,但它的所有方法都直接来自此链接中的代码, http://msdn.microsoft.com/en-us/library/cc861607.aspx public static MemoryStream CreateThingReport(List things, MemoryStream template) { SpreadsheetDocument spreadsheet = SpreadsheetDocument.Open(template, true); WorksheetPart workSheetPart = spreadsheet.WorkbookPart.WorksheetParts.First(); SharedStringTablePart sharedStringPart = spreadsheet.WorkbookPart.GetPartsOfType().First(); Cell cell = null; int index = 0; //create cell formatting for header text Alignment wrappedAlignment = new Alignment { WrapText = true }; uint rowOffset […]

OpenXML替换所有文档中的文本

我有下面的代码。 我想用“NewText”替换文本“Text1”,这是有效的。 但是当我将文本“Text1”放在一个不再适用于表格中的“Text1”的表格中时。 我想在所有文件中进行替换。 using (WordprocessingDocument doc = WordprocessingDocument.Open(String.Format(“c:\\temp\\filename.docx”), true)) { var body = doc.MainDocumentPart.Document.Body; foreach (var para in body.Elements()) { foreach (var run in para.Elements()) { foreach (var text in run.Elements()) { if (text.Text.Contains(“##Text1##”)) text.Text = text.Text.Replace(“##Text1##”, “NewText”); } } } }

打开XML SDK 2.0以按名称访问excel 2010工作表

我有一个Excel 2010电子表格,其中包含3个名为Sheet1,Sheet2和Sheet3的工作表。 我正在尝试按名称获取对工作表的引用。 我正在使用代码: using (SpreadsheetDocument myWorkbook = SpreadsheetDocument.Open(FileName, true)) { //Access the main Workbook part, which contains all references WorkbookPart workbookPart = myWorkbook.WorkbookPart; WorksheetPart worksheetPart = workbookPart.WorksheetParts.Last(); // this gives me Sheet1 SheetData sheetData = worksheetPart.Worksheet.GetFirstChild(); } 我试图获得Sheet2的引用,但我找不到这样做的方法。 我越来越近了,但我还没到那里: var x = workbookPart.Workbook.Sheets.Where(s=> s.GetAttribute(“name”, “”).Value == “Sheet2”).FirstOrDefault(); 这让我得到了工作表的参考,但没有给工作表上的数据 谢谢

向Word文档中的现有表添加行(打开XML)

我需要使用现有表(例如,3列)打开现有Word文档(.docx)并向该表添加新行。 有没有办法做到这一点? 我正在使用Open XML 我正在创建这样的表(第一次): Table tbl = new Table(); // Set the style and width for the table. TableProperties tableProp = new TableProperties(); TableStyle tableStyle = new TableStyle() { Val = “TableGrid” }; // Make the table width 100% of the page width. TableWidth tableWidth = new TableWidth() { Width = “5000”, Type = […]

OpenXML多张表格

我正在为excel工作簿添加多个工作表。 我希望在一张纸上有一行,在另一张纸上有另一行。 此代码将两行都放在两个工作表上。 有想法该怎么解决这个吗? 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 sheet1 = new Sheet() { Id = ssDoc.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = […]

如何更改字体打开xml

如何通过OpenXml更改文档的字体系列? 我尝试了一些方法但是,当我打开文档时,它总是在Calibri中 按照我的代码,我尝试了。 我认为Header Builder无用于发布 private static void BuildDocument(string fileName, List lista, string tipo) { using (var w = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document)) { var mp = w.AddMainDocumentPart(); var d = new DocumentFormat.OpenXml.Wordprocessing.Document(); var b = new Body(); var p = new DocumentFormat.OpenXml.Wordprocessing.Paragraph(); var r = new Run(); // Get and format the text. for (int i […]

无法使用openxml在PPT报告中生成第二个表

我有这个代码。 我能够完美地生成带有文本数据的pptx报告。 我在本报告中有4个表,其中包含动态数据。 我能够在PPT中生成一个表但无法执行多个表。 要求:右边我有4张桌子。 期望:我能够得到第一张桌子。 在下面的代码中,我在AddNewSlide方法中添加了P.GraphicFrame graphicFrame2 ,假设它将为表创建另一个框架,我可以填充数据并放在PPT上。 但它不起作用。 请帮忙。 using (PresentationDocument presentationDocument = PresentationDocument.Open(slideName, true)) { //Get the first slide from presentation SlidePart intitalSlide = presentationDocument.PresentationPart.SlideParts.First(); AddNewSlide(presentationDocument, intitalSlide, projectID, reportType); } #region Powerpoint Reports private System.Data.DataTable GetValueForPPTReport(int projectID) { System.Data.DataTable dt = new System.Data.DataTable(); SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText […]

检查docx是否已损坏

我尝试了很多解决方案,但代码总是检查损坏的文件并发送true using (FileStream fileStream = File.OpenRead(path[0])) { MemoryStream memStream = new MemoryStream(); memStream.SetLength(fileStream.Length); fileStream.Read(memStream.GetBuffer(), 0, (int)fileStream.Length); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ContentType = “application/vnd.openxmlformats-officedocument.wordprocessingml.document”; HttpContext.Current.Response.AddHeader(“Content-Disposition”, “attachment; filename=myfile.docx”); HttpContext.Current.Response.BinaryWrite(memStream.ToArray()); HttpContext.Current.Response.Flush(); // HttpContext.Current.Response.Close(); HttpContext.Current.Response.End(); } 其中path [0]是我的docx位置..仍然读取损坏的文件,并没有抛出任何错误..任何建议PLZ ..

将 / Embed转换为aw:drawing

我有一个V:Shape我假设的V:Shape来自.Doc文件转换为.Docx文件,但在我编写的代码中,我想要一个DocumentFormat.OpenXml.Drawing.Pictures.Picture 。 有没有办法以编程方式转换为Picture ? 我正在使用的片段是: foreach (var item in value) { if (!item.Descendants().Any()) //pictures are processed differently – they’re an absolute s**t storm to code… { p.Append(item.CloneNode(true)); } else { p.Append(CreateImageRun(source, item, target, f)); } } public Run CreateImageRun(WordprocessingDocument sourceDoc, Run sourceRun, WordprocessingDocument target, FooterPart footerPart) { ImagePart newPart = footerPart.AddImagePart(ImagePartType.Png); ImageData shape = sourceRun.Descendants().FirstOrDefault(); […]