Tag: openxml sdk

尝试读取Excel文件中的值时,在C#中找不到方法GetCellValue

我将根据MS 教程 ,使用OpenXML从电子表格中检索Excel值 按指定使用指令 using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Spreadsheet; 但是对于我的生活,我不能得到VS2013认识的方法。 下面以粗体显示。 string value = GetCellValue(fileName, "Sheet1", "A1"); 我错过了什么? 我正在使用.NET 4.6.1和Office 365.我GOOGLE了它,但找不到任何具体的方法API的参考 仅供参考我正在试图创build一个dynamic阅读简单的数据从电子表格打包成一个类对象,并发射到客户的Web服务

使用Word 2010和2003,使用OpenXML在Word文档中embeddedExcelgraphics

我必须实现一个embeddedExcelgraphics的Microsoft Word文档生成器。 我的一个制约因素是使我生成的docx与Microsoft Word 2010和2003 +兼容包一起工作。 我没有设法使它们都适用于他们。 我可以使它适用于Word 2010,但该文档不适用于2003,反之亦然。 经过多次search,使其在Word 2003中工作我已经在我的代码中添加了这个: private static void Word2003(ChartPart importedChartPart, MainDocumentPart mainDocumentPart, Stream fileStream) { var ext = new ExternalData { Id = "rel" + 5 }; importedChartPart.ChartSpace.InsertAt(ext, 3); var fi = new FileInfo(@"generated.xlsx"); importedChartPart.AddExternalRelationship("http://schemas.openxmlformats.org/officeDocument/2006/relationships/package", new Uri(fi.Name, UriKind.Relative), "rel5"); EmbeddedPackagePart embeddedObjectPart = mainDocumentPart.AddEmbeddedPackagePart(@"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); Stream copyStream = new MemoryStream(); fileStream.CopyTo(copyStream); […]

往返XML – > Excel – > XML

我想在Web应用程序中使用来自服务器端C#的Excel XML Mapfunction。 XML映射使您能够将XML模式与工作簿相关联,并指定哪些单元格映射到模式的哪些部分。 从那里您可以导入XML文件来更新单元格值,并导出包含最新值的XML(即,是否已手动更改)。 您可以在Excel的“开发人员”选项卡上手动执行此操作。 我们已经获得了Aspose Cell的许可证,但是(尽pipe在这个领域有一些最近的工作),它似乎并不完全支持XML地图。 有没有人有这个成功? 我已经使用Excel Interop创build了一个testing,它可以工作(即可以编程方式设置一个XML Map并使用它来导入和导出值)。 这归结于: XmlMap map = workbook.XmlMaps.Add(xmlSchema, Missing.Value); // map cell C3 to the question text var worksheet = (Worksheet)workbook.Worksheets[1]; Range cell = (Range)worksheet.Cells[3, 3]; cell.XPath.Clear(); // just in case cell.XPath.SetValue(map, "/Root/Question/Text", Missing.Value, false); // import the XML to populate the mapped cells map.ImportXml(xmlData, true); […]

Open XML SDK如何读取大型Excel文件?

所有, 我们计划在Visual Studio C#(开发客户端应用程序)中使用Microsoft的Open XML SDK读取大的excel文件,导入数据并input到数据库。 它的performance怎么样? 你认为使用COM更好吗? 或者使用其他商业图书馆来执行此操作? 非常感谢,非常感谢你的build议

OpenXML – 更新单元格后刷新Excel工作表

我有一个使用OpenXML SDK读取和写入Excel(xlsx)单元的类。 该类基于从这里投票最多的答案: Open XML SDK 2.0 – 如何更新电子表格中的单元格? 我需要更新一个单元格,然后获取另一个单元格的值,其中包含一个计算公式。 更新工作正常,但是当我读取更新后的公式单元格时,我获得了编辑前存在于文档中的旧值。 但是,当我运行程序后手动打开我的xlsx时,可以看到正确的值。 所以看起来细胞的旧值被caching在某个地方……这很奇怪,因为我每次在读/写单元格之前打开/closures我的文档。 编辑:文森特的答案让我更新我的示例代码。 我添加了一个Refresh方法,打开,保存并closures在后台运行的Excel应用程序中的文档。 这重新计算我的公式。 有关更多详细信息和C#代码示例,请参阅: http : //fczaja.blogspot.com/2013/05/how-to-read-and-write-excel-cells-with.html

Excel表格validation/公式不被复制到新表格行

我目前正在使用EPPlus库来将大量数据导出到这些工作表中的几个工作表和表格中。 我已经能够创build列表validation,并通过名为范围的查找工作表完全正常工作。 但是,我遇到了一些我一直无法想象的奇怪的行为。 开始: 我下载文件。 我打开文件。 我select一个包含表格的电子表格,表格中有多行,有一个列表validation列,选项是/否从下拉列表中select。 每一行都有这个列表validation。 情况1: 然后,我通过从Excel表格的右下angular拖动来创build新行,在Excel表格中创build一个新行。 该公式未复制到新行。 我现在已经失去了在我的Excel表中新行的validation。 情景2: 我删除了Excel表中的所有现有行,第一行除外(仍然包含“是/否”列中的列表validation)。 我然后通过从Excel表格的右下angular拖动来创build新行,在Excel表格中创build一个新行。 公式被复制到新行,我现在可以通过使用提供的validation插入新的有效数据到这一行。 我的代码的逻辑: 每个单元格都有一个循环validation应用到它的单元格需要具有的validationtypes(即数量,date,列表,大于,小于等)。 列表validation通过指定的表查找地址进行访问。 有没有XML输出错误,文件打开罚款,我可以从单元格访问列表validation没有任何问题。 我试图解决这个问题的事情: 1)填充单元格范围,然后从这个范围创buildexcel表格。 – 这背后的想法是,首先有一个创build的数据select,然后select范围,只是把它变成一个Excel表。 对于表中的新行,默认行为是从上面的行复制公式。 所以这个解决scheme似乎合乎逻 2)在一系列未填充的单元格上创build一个Excel表格,然后填写该范围。 – 背后的想法是,EPPlus在工作表中创build表格的方式可能存在一个错误,或者XML元素的顺序可能存在问题,实际上只是一个实验性更改。 代码: var strategy = Strategy.CreateTableFirst; ExcelRange subRowDataRange = null; ExcelTable table = null; if (strategy == Strategy.CreateTableFirst) { subRowDataRange = worksheet.Cells[headerRowIndex, worksheet.Dimension.Start.Column, ToRow: headerRowIndex + groupedRowData.Count(), […]

打开xml excel在占位符中插入实际值

我有一个单元格在Excel工作表中包含占位符“$$ value”,问题是我需要使用Open XMLreplace占位符的实际值,并将其另存为单独的工作簿。 这是我试过的代码…它不是取代实际值,也无法保存工作簿。 我需要解决这个问题。 WorksheetPart worksheetPart = (WorksheetPart)myWorkbook.WorkbookPart.GetPartById(sheet.Id); DocumentFormat.OpenXml.Spreadsheet.Worksheet worksheet = worksheetPart.Worksheet; string _txt1 = "$$value"; if (_txt1.Contains("$$")) { worksheet.InnerText.Replace(_txt1, "test"); }

基于Open XML SDK构build的是哪些框架?

由于Open XML SDK只提供强types的类,所以并不真正需要创build和操作Open XML文档。 是否有构build在Open XML SDK上的框架可以完成框架应该做的事情:添加一个新的抽象层并实际隐藏较低层的细节? 到目前为止,我知道一个图书馆,但我想知道是否还有一些: ClosedXML – OpenXML的简单方法 (一个轻松创buildExcel文档而不处理XML文档麻烦的库)

尽pipe没有关于小数精度的worksheet.xml和styles.xml中存储的信息,Excel如何正确显示小数值?

以下是我要检查行为的步骤: 1#创build一个Excel(xlsx)文件,把1234.56789放到一个单元格中,保存。 2#提取.xlsx文件,请参阅sheet1.xml和styles.xml文件。 在xl / worksheets / Sheet1.xml中,您将看到以下内容: <sheetData><row r="1" spans="1:1" x14ac:dyDescent="0.25"><cr="A1" s="1" <v>25778.567889999998</v> </c></row></sheetData> Styles.xml中没有关于原始数字1234.56789的精度的1234.56789 。 当我们在MS Excel中打开它时,Excel如何显示原始值? 它是如何重构原始数字的,虽然在提取的文件中没有信息? 请注意,我没有更改单元格格式types或任何内容,所以单元格格式为General。 我明白,因为Excel存储的数字为浮点,它不能保存的值,以完美的准确性,我不明白的是如何保留原来的价值,当我在MS Excel中打开。 我在使用OpenXML SDK读取Excel文件时遇到了一个问题,但在询问有关这个问题之前,我正在寻找解决这个更基本问题的答案。

合并单元格上的OpenXML SDK边框仅应用于第一个单元格

使用OpenXML SDK将边框应用到合并的单元格区域时,边框仅显示合并范围中的第一个(左上angular)单元格。 我完全不知道,这让我疯狂。 使用生产力工具,我找不到任何有意义的差异,我有什么和按预期工作。 这是我为样式表生成的XML: <x:borders count="2" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> <x:border> <x:left /> <x:right /> <x:top /> <x:bottom /> <x:diagonal /> </x:border> <x:border> <x:left /> <x:right /> <x:top /> <x:bottom style="thick"> <x:color auto="1" /> </x:bottom> <x:diagonal /> </x:border> </x:borders> <x:cellXfs xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> <x:xf fontId="0" /> <x:xf fontId="1" fillId="2" applyFont="1" applyFill="1" /> <x:xf borderId="1" applyBorder="1" /> </x:cellXfs> 我已经尝试了一切,在边界之前,之后等应用合并。