Tag: openxml

使用C#excel OpenXML API从模板创build报告

我一直在使用Microsoft COM模型来准备报告,但是如果服务器没有安装excel,它会很慢并且会失败。 所以我正在转向使用OpenXML从服务器进程创build报告,这个服务器进程也做了很多其他的事情。 我有一个模板,其中包含我需要更改或扩展的数据的命名范围,命名图表,命名图表系列,命名工作表等。所有我的格式包含在Excel文件中,我在我的服务器端进程中的所有格式都是填充的带有数据的文件。 这些是我需要使用Excel OpenXML进行复制的步骤: 打开一个现有的工作表,并基于它创build一个新的工作表。 通过工作表名称获取工作表 获取该工作表中的命名范围。 从数据填充命名范围,并根据需要扩展范围(基于数据集)。 按图表名称获取图表 按系列标题获取图表系列 将图表系列设置为新的范围 将图表导出为jpeg以在html中使用。 保存新的文件。 是否可以干净地在OpenXML中执行这些步骤? 任何例子都会帮助我很多。 或者这是一个轻量级的库。 这些第三方库中的一些太大,从头开始创build新表格更加有用。 任何帮助赞赏。

如何使用c#.net将xml转换为excel表格

我使用下面的代码和它的工作。 但是每次创build一个同名的excel表。 有谁可以告诉我如何导出与XML表名称相同的Excel表单有吗? private void button2_Click(object sender, EventArgs e) { MSDN.Sample.XMLToExcel.OpenXMLOffice objTest = new MSDN.Sample.XMLToExcel.OpenXMLOffice(); objTest.XMLToExcel(textBox14.Text); MessageBox.Show("Umpire Report Extracted successfully."); }

使用Excel作为.NET代码的模板

我目前正在devise阶段的一个应用程序,目前在Excel中运行。 它是一个包含复杂的math(三元代数等)公式的科学应用程序。 最初我试图用代码做所有的事情,很快就发现将这些科学公式转换成.NET的过程非常繁琐(很有可能出现错误)。 另一种select是使用Excel电子表格及其单元格公式的“模板”,其中.NET中的用户界面允许用户input数据,.NET(Web应用程序)将此input数据传递给Excel电子表格,Excel电子表格工作并给出结果,.NET应用程序读取并显示给用户。 (这是对build议devise的简单解释)。 它将成为Web应用程序(不公开面向网站)。 其中一个问题(即我的)将是当多个用户使用该应用程序时,Excel文件将有多个线程读/写的问题。 克服这个我有关于存储在SQL数据库中的文件的副本,每个会话复制到临时文件夹与Guid名称(使其唯一),一旦它完成删除文件等 我的问题是,有没有人看到这个计划中的任何缺陷或缺点,例如性能,读/写excel等,或者我需要考虑的其他事情? 我打算使用OpenXML和ClosedXML库。 我是否需要在部署服务器上安装Office以使其工作? (我想不会)。 谢谢,

导出为ex​​cel数据时出错:“',hex值0x07,是一个无效的字符,使用c#

当我尝试导出kendo ui网格中的数据以达到excel时,我遇到了一个奇怪的问题。 错误: An exception of type 'System.ArgumentException' occurred in System.Xml.dll but was not handled in user code Additional information: ' ', hexadecimal value 0x07, is an invalid character. 和下面的方法我用于出口到Excel private static void WriteDataTableToExcelWorksheet(DataTable dt, WorksheetPart worksheetPart) { OpenXmlWriter writer = OpenXmlWriter.Create(worksheetPart); writer.WriteStartElement(new Worksheet()); writer.WriteStartElement(new SheetData()); string cellValue = ""; int numberOfColumns = dt.Columns.Count; bool[] […]

从excel中读取date并不完全正确

我有一个正在阅读的Excel电子表格。 电子表格中的值是7/24/2014 10:43:33 AM 使用OpenXML读取后的单元格值是41844.446908680555 。 当我做这个计算转换为一个date: dte = DateTime.FromOADate(double.Parse(value)); 我得到了7/24/2014 10:43:32 AM 这是典型的时候转换date/时间还是我错过了什么? 谢谢

“外部表格不是预期的格式”

我尝试用Excel数据填充DataSet(通过OpenXML库来获取表名),但有时我得到错误:“外部表格不是预期的格式”。 所以,我使用相同的文件= * .xlsx(我通过Excel 2010将它从* .xls转换为* .xlsx)。 昨天工作正常,但现在它不工作: public DataTable CreateTable(string sheetName) { sheetName = sheetName + "$"; bool hasHeaders = false; string HDR = hasHeaders ? "Yes" : "No"; string strConn; if (_filePath.Substring(_filePath.LastIndexOf('.')).ToLower() == ".xlsx") strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + _filePath + ";Extended Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=0\""; // strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" […]

OpenXML Excel当值在SharedStringTable中时如何更改单元格的值

我正在寻找一种安全和有效的方式来更新单元格的值可能在SharedStringTable(这似乎是由MS Excel创build的任何电子表格的情况下)的值。 顾名思义,SharedStringTable包含可能在多个单元格中使用的string。 所以只要在string表中find这个项目并且更新这个值并不是要走的路,因为它也可能被其他单元使用。 据我所知,必须做到以下几点: 检查单元格是否使用string表 如果是这样,检查新的string是否已经存在,在这种情况下只使用它(记住,如果其他单元格不再使用旧string,请删除该项目)! 如果不是,请检查电子表格中的任何其他单元格是否具有旧string的项目 如果是这样,用新的string创build新的项目,并引用它 如果不是,只需用新string更新现有的项目 使用OpenXML SDK有没有更简单的解决scheme? 另外考虑一个人可能不仅要更新一个单元,而是要为几个单元设置新的(不同的)值。 所以我们可能会在循环中调用更新单元格方法…

openxml和Excel 15位数字限制

我正在使用从Apache的POI从一个Java程序中的Excel文件中读取。 excel有我在Java中复制的macros,但是当我比较结果时,我试图尽可能地根除小的舍入差异。 在下载POI 3.13的代码并在debugging模式下运行之后,我意识到他们没有处理像Excel这样的数字,它只使用了15位数字,之后添加了非重要的0,而是使用17位数的表示。 你可以在这里看到。 但更深入的,似乎POI使用openxml和openxml单元格已经存储在17个数字而不是15浮点数…所以在我看来,在openxml中处理数量有一个错误,但我很惊讶那些“大”的处理浮点数的东西以前没有被发现过,因为我找不到任何关于这个的东西。 所以我的问题:是否有一个解决scheme,以获得完全相同的15位数字的Excel使用兴趣点? 而且更好的办法就是可以在这个问题上改正Excel的行为?

New-Object返回空对象

我试图扩展这个例子使用extarnal模块来调用generics方法。 我的目标是创build新的xls文件并写入它。 [Reflection.Assembly]::LoadWithPartialName("DocumentFormat.OpenXml") | Out-Null [Reflection.Assembly]::LoadWithPartialName("DocumentFormat.OpenXml.Packaging") [Reflection.Assembly]::LoadWithPartialName("DocumentFormat.OpenXml.Spreadsheet") [Reflection.Assembly]::LoadWithPartialName("OpenXmlPowerTools") Import-Module (join-path (Split-Path $MyInvocation.MyCommand.Path) "GenericMethods.psm1") $document = [DocumentFormat.OpenXml.Packaging.SpreadsheetDocument]::Create("C:\Temp\text.xlsx", [DocumentFormat.OpenXml.SpreadsheetDocumentType]::Workbook) $workbookPart = $document.AddWorkbookPart(); $workbookPart.Workbook = New-Object -TypeName DocumentFormat.OpenXml.Spreadsheet.Workbook $worksheetPart = Invoke-GenericMethod -InputObject $workbookPart -MethodName AddNewPart -GenericType DocumentFormat.OpenXml.Packaging.WorksheetPart $sheetData = New-Object -TypeName DocumentFormat.OpenXml.Spreadsheet.SheetData $worksheetPart.Worksheet = New-Object -TypeName DocumentFormat.OpenXml.Spreadsheet.Worksheet -ArgumentList $sheetData [DocumentFormat.OpenXml.Spreadsheet.Sheets]$foo = New-Object -TypeName DocumentFormat.OpenXml.Spreadsheet.Sheets Invoke-GenericMethod -InputObject $document.WorkbookPart.Workbook -MethodName […]

使用openXML将图像添加到excel中

我一直在尝试使用openXML将图像添加到工作表中的单元格中。 我在search过程中发现的大多数解决scheme都使用了与PolymathProgrammer网站代码相似的代码: How to insert an image in Excel Open XML 当我尝试这个时,我得到一个关于NonVisualDrawingProperties的错误,像这样: 即使我的使用应该包括它: 我究竟做错了什么? 还是有一些更简单的代码,我可以使用?