Tag: openxml

追加新单元打破了Excel文件

这可能是重复尽可能多的post引用这种问题,但我无法find这个案件的确切答案。 所以,我有一个Excel文件,其中单元格“E4”包含公式“= C4 + D4”。 所有其他单元格都是空的,这意味着我不能通过OpenXmlsearch或获取它们,只是因为它们不存在于Xml中。 所以为了填充单元格“C4”和“D4”,我必须创build它们(像这样:) var cell = new Cell(){ CellReference = new StringValue("C4"), DataType = new EnumValue<CellValues>(CellValues.Number), CellValue = new CellValue("123") } 对于单元格“D4”是相同的,然后将这些单元格追加到行中 row.Append(cell); 打开excel文件后,它显示错误“Excel在file.xlsx中发现不可读的内容。是否要恢复此工作簿的内容?如果您信任此工作簿的源,请单击”是“。 我检查,当Excel文件中没有公式的单元格被正确追加。 所以我的问题是,使用OpenXml如何追加包含公式的Excel文件中的单元格,以便不破坏文件?

OpenXML将值写入空单元在Excel中

我已经想出了如何以我想要的格式将string数组的内容写入Excel,但是现在我遇到了麻烦,确保它不会覆盖已经填充到Excel文件中的单元格。 目前我正在尝试读取Excel文件的内容,然后插入基于没有值的地方。 这是我现在有。 private static void WriteToExcel(string[] contents, char[] desiredColumns) { string filePath = @"D:\Folder\test.xlsx"; try { using (SpreadsheetDocument StatsCollection = SpreadsheetDocument.Open(filePath, true)) { WorkbookPart bookPart = StatsCollection.WorkbookPart; string sheetName = "Sheet1"; SharedStringTablePart sstpart = bookPart.GetPartsOfType<SharedStringTablePart>().First(); SharedStringTable sst = sstpart.SharedStringTable; Sheet mySheet = bookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == sheetName).FirstOrDefault(); WorksheetPart sheetPart = (WorksheetPart)(bookPart.GetPartById(mySheet.Id)); Worksheet sheet = […]

使用OpenXML将Excel 2013范围格式化为表格

最近我发现自己需要将一个大型的C#DataTable粘贴到Excel中,并且很高兴看到SimpleOOXML( https://simpleooxml.codeplex.com )扩展的WorksheetWriter.PasteDataTable()函数,它完成了这个工作。 不幸的是,它并没有自动地将粘贴的DataTable转换为具有自动化列宽和过滤function的“Format as Table”,正如人们所期望的那样,而是只允许我指定单独的样式(例如边框,背景颜色等)。 如果有人知道如何使用SimpleOOXML(我在他们的论坛中找不到相关的东西),那将是非常了不起的,但是如果这是不可能的,我想知道是否可以使用传统的OpenXML来完成。 编辑 为了澄清,我检查了OpenXML的MSDN文档,但找不到以下方法: 以编程方式使用OpenXML格式化特定范围(G7:I9)作为表,使用样式“Table Style Light 9”,并保留现有的标题。

以编程方式对Excel电子表格进行sorting

我正在使用OpenXML来操作Excel文件。 我发送Excel文件作为内存stream,编辑它们,然后将它们发送回浏览器,以便它们在客户端办公室程序中打开。 我使用这个代码创build新的电子表格: public static void InsertWorksheet(string docName) { using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(docName, true)) { // Add a blank WorksheetPart. WorksheetPart newWorksheetPart = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>(); newWorksheetPart.Worksheet = new Worksheet(new SheetData()); Sheets sheets = spreadSheet.WorkbookPart.Workbook.GetFirstChild<Sheets>(); string relationshipId = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart); // Get a unique ID for the new worksheet. uint sheetId = 1; if (sheets.Elements<Sheet>().Count() > 0) […]

OpenXML EmbeddedPackagePart和caching

我已阅读了所有关于在Powerpoint中更新链接到Excel数据的图表。 我已经成功完成了这一步 – 更新底层电子表格和编号caching。 我假设我目前的问题是非常相似的 – 只有我找不到caching! 也许有人可以把我指向正确的方向。 而不是一个Powerpoint的图表(其中有embedded式软件包部分和数字caching),我只是从embedded式Excel复制单元格,他们直接embedded到幻灯片。 我可以更新底层数据,和往常一样,如果select“编辑”我的embedded式单元格,我会看到更新的数据,当我回到Powerpoint文档时,所有数据都能正确显示。 所以我猜这是类似的问题,但我的更新caching在哪里? 目前使用PresentationDocument.SlideParts [0] .EmbeddedPackageParts [0]来更新底层数据(实际上并不使用索引0,但这是要点)。 谢谢你的帮助

C#创build数据透视表OpenXML

早上好, 我正在用closedxml创build一个数据透视表,到目前为止这么好所有的工作正常,没有人知道如何使用ClosedXML或OpenXML创build与数据透视表(透视图)相关联的图表。 这是甚至可能或只有正常的图表? 任何帮助,将不胜感激。

阅读excel,search和replaceWeb C#应用程序中的文本

我有一个excel文件,需要访问,replace部分文本,并下载更改的文件。 但是我无法保存更改,我应该始终将版本保留在服务器上。 我做了几个search,但我只能改变文件并保存更改。 我试图解决下面的链接,我设法search和更改文件,但我不知道如何下载并停止保存更改。 使用C#在Excel中查找和replace文本 非常感谢你

OpenXML:如何获取Excel工作表中选中的checkbox的列表?

我正在尝试阅读Excel文档以获取已选中的checkbox列表。 我在这里find了一个解决scheme,使用OpenXML在Word文档中查找checkbox,但是无法在Excel中checkbox。 看来CheckBox类是为WordProcessing文档而不是Excel保留的。 下面的代码显示了所有checkbox的列表,但无论我做什么,我都无法访问它们的值。 有任何想法吗? C#代码: using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(@"C:\test.xlsx", false)) { WorkbookPart workBookPart = spreadsheetDocument.WorkbookPart; foreach (Sheet s in workBookPart.Workbook.Descendants<Sheet>()) { if (s.Name.ToString().Equals("Sheet1")) { WorksheetPart wsPart = workBookPart.GetPartById(s.Id) as WorksheetPart; foreach (DocumentFormat.OpenXml.Spreadsheet.Control cb in wsPart.Worksheet.Descendants<DocumentFormat.OpenXml.Spreadsheet.Control>()) { if (cb.Name.ToString().IndexOf("CheckBox") > -1) { textBox1.AppendText(cb.Name + "\n"); } } } } } 更新: 事实certificate,我们正在使用Active X控件。 以下代码能够正确定位checkbox,这是一个性能非常低的解决scheme,但不能使用OpenXML: […]

如何创build一个可编辑的Excel

我正在创build一个Excel文件: SpreadsheetDocument document = SpreadsheetDocument.Create(filename, SpreadsheetDocumentType.Workbook) WorkbookPart workBookPart = document.AddWorkbookPart(); workBookPart.Workbook = new Workbook(); WorksheetPart workSheetPart = workBookPart.AddNewPart<WorksheetPart>(); workSheetPart.Worksheet = new Worksheet(); Sheets sheets = workBookPart.Workbook.AppendChild(new Sheets()); Sheet sheet = new Sheet() { Id = workBookPart.GetIdOfPart(workSheetPart), SheetId = 1, Name = "Test Sheet" }; sheets.Append(sheet); workBookPart.Workbook.Save(); 当我打开文件时,它只是ReadOnly,我怎样才能使其可编辑的用户? ClosedXML是优先级,解决scheme的可选方式可以是OpenXML

如何在Excel中呈现SpreadsheetML,只给出Sheet1.xml

我在XLSX格式中有一个损坏的工作簿,但zip压缩文件(xl \ worksheets \ Sheet1.xml)中的Sheet1.xml文件似乎完好无损。 有没有办法在Excel内渲染? 我确实想过创build一个新的工作簿,然后覆盖在压缩包中的工作表,但有没有办法直接在Excel中打开/转换/呈现Sheet1.xml文件, 作为工作表 ? 似乎没有共享的string部分。