Tag: openxml

使用OpenXML sdk读取excel文件时遇到困难

我有一个从Excel文件中读取并将结果存储在DataSet中的函数。 我有另一个function写入Excel文件。 当我尝试从常规的人类生成的Excel文件读取时,Excel读取函数返回一个空白的DataSet,但是当我从由写入函数生成的Excel文件读取时,它工作得很好。 该函数然后将无法正常生成的Excel文件,即使我只是复制和粘贴函数生成的Excel文件的内容。 我终于追查到这一点,但我不知道该从哪里出发。 我的代码有什么问题吗? 任何帮助是极大的赞赏。 提前致谢! 这是excel生成函数。 public static Boolean writeToExcel(string fileName, DataSet data) { Boolean answer = false; using (SpreadsheetDocument excelDoc = SpreadsheetDocument.Create(tempPath + fileName, SpreadsheetDocumentType.Workbook)) { WorkbookPart workbookPart = excelDoc.AddWorkbookPart(); workbookPart.Workbook = new Workbook(); WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>(); Sheets sheets = excelDoc.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets()); Sheet sheet = new Sheet() { Id = […]

如何使用OpenXML更新Excel中的外部链接

我有一个工作簿与几个外部链接。 经常我们需要更新链接指向一个新的Excel数据库,所以我正在做一个小型的Windows应用程序自动执行。 我正在尝试使用OpenXML来完成这个任务。 我不想使用Interop,因为打开文件需要很长时间,请更改链接,然后再次closures工作簿。 任何想法,请让我知道。 我也打开使用ClosedXML。

OpenXML:excel在.xsls中发现不可读的内容

我在ASP.NET应用程序中使用OpenXML。 这里是生成它的代码: MemoryStream ms = new System.IO.MemoryStream(); SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(ms, SpreadsheetDocumentType.Workbook); WorkbookPart workbookPart = spreadsheetDocument.AddWorkbookPart(); workbookPart.Workbook = new Workbook(); WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>(); worksheetPart.Worksheet = new Worksheet(); UInt32Value rowIndex = 0; SheetData sheetData = new SheetData(); Row r1 = new Row() { RowIndex = rowIndex }; Cell c1 = new Cell() { DataType = […]

如何使用.net将checkbox添加到Excel电子表格?

我仔细研究过这个,但是还没有find答案。 我收到一个任务,要求我在.net中将一些表格数据导出到Excel中。 我惊喜地发现“ClosedXML”库能够相对简单地完成我想要的大部分function。 但是,当我把我的工作交给我的客户时,他说他希望每行数据都有一个checkbox。 这个想法是,用户可以检查和取消选中这些框,将file upload到Web服务器,然后让Web服务器根据选中的框对数据库进行更改。 不幸的是,我找不到任何关于ClosedXML中的checkbox的引用,并且我在某处的讨论中看到至less有一条评论(没有任何进一步的解释),ClosedXML不会做checkbox。 我试图创build一个Excel电子表格,除了一个checkbox,没有任何东西。 我尝试浏览OpenXML对象模型,发现似乎有以下对checkbox的引用: document.WorkbookPart.WorksheetParts.Single().ControlPropertiesParts.Single().FormControlProperties 是的,所有这些都可以find一个checkbox,更不用说为每一行添加一个! 如果我有在Excel中写入数据行的代码,如何将checkbox添加到行? 如果我必须使用不同的库,那没关系。 更新:正如@Mike所build议的,很容易将其设置为下拉菜单,用户可以使用数据validation从两个不同的选项中进行select。 代码如下所示: cell.SetValue(item.isOn ? "On" : "Off"); cell.DataValidation.List("\"On,Off\"", true);

无法使用OpenXMl单元样式的多个字体

我在样式表中定义了两种不同的字体,但是如果我使用StyleIndex = 1的第二种样式。 我无法打开生成的电子表格。 任何帮助将不胜感激 我的代码 Private Function GenerateStyleSheet() As Stylesheet Dim ss As Stylesheet = New Stylesheet() Dim fonts1 As Fonts = New Fonts() Dim f1 As Font = New Font() Dim f1Size As FontSize = New FontSize() f1Size.Val = 11D f1.Append(f1Size) Dim f2 As Font = New Font() Dim b2 As Bold = […]

为什么使用OpenXml SDKparsingexcel单元格时,单元格样式索引返回错误的CellFormat值?

考虑一个值为39.95的通用格式单元格。 当我获取CellFormat的单元格时,它返回错误的单元格格式 – CellFormat thisCellFormat = ((CellFormat)cellFmts.ChildElements[(int)thisCell.StyleIndex.Value]); int fmtId = Convert.ToInt32(thisCellFormat.FormatId.Value); 返回的fmtId的值是1,在某些情况下是38,应该是2或39。 此问题仅适用于常规格式单元格,我正在为数字格式单元格获取正确的ID。 下面是标准的ECMA-376办公室开放XML文件格式指定隐含的单元格格式的参考 – ID格式代码 0一般 1 0 2 0.00 3#,## 0 4#,## 0.00 9 0% 10 0.00% 11 0.00E + 00 12#?/? 13#?? / ?? 14毫米 – 月 – 年 15 d-mmm-yy 16 d-mmm 17毫米 – 年 18小时:毫米上午/下午 19 h:mm:ss AM / PM […]

Excel 2007中的数值 – 基础xml文件中的表示与存储

这个问题与.NET和OpenXml有关。 我已经通过了下面的文章,它有很好的解释,但不是我的问题的答案: 在Excel 2007中的数值不一致的可视化与底层的XML文件 在我的应用程序中,用户正在上传Excel(.xls / .xlsx),并使用OpenXML SDK进行parsing。 parsing工作正常,除了一些值。 Excel存储的值与在某些场景中input的值不同。 以下是一些用户input的内容与底层xml中存储的内容的示例: + ——————– + ———————– + —- —————- + | 用户input值| Excel显示值| 存储的XML值| + ——————– + ———————– + —- —————- + | 4.1 | 4.1 | 4.0999999999999996 | + ——————– + ———————– + —- —————- + | 4.4 | 4.4 | 4.4000000000000004 | + ——————– […]

如何在Excel中使用开放XML在c#中插入超链接

如何在Excel中使用C#插入超链接? 我试过这个,但是不起作用 WorksheetPart workSheetPartss = new WorksheetPart(); workSheetPartss.AddHyperlinkRelationship(new Uri("http://www.google.com", UriKind.Absolute), true); Excel.SetCellValue(spreadsheet, worksheet, k, i + 1, workSheetPartss.Uri.ToString(), true);

Xml转换为Excel xls

好的,所以我一直在通过VB.Net来处理一些XML数据的XSL转换。 我有一切工作正常,数据保存为一个可读的.x​​ls文件。 问题是我尝试打开文档时收到以下内容。 您尝试打开的文件“Test_Xls.xls”采用与文件扩展名指定的格式不同的格式。 打开文件之前,validation该文件是否未被破坏,是否来自受信任的来源。 你想现在打开文件吗? 我一直在做一些阅读,我还没有能够提出任何解决问题的方法。 记事本+ +中的.xls文件,并剥夺它的一切,我仍然可以产生错误。 我把这个作为我转换的输出: <?xml version="1.0" encoding="utf-8"?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> <Worksheet ss:Name="Testing Data"> <Table> <Row> <Cell> <Data ss:Type="String">Tests</Data> </Cell> </Row> <Row> <Cell> <Data ss:Type="Number">1</Data> </Cell> </Row> </Table> </Worksheet> </Workbook> 哪些乞丐的问题..有没有什么办法来产生一个文件,可以在Excel中看到通过Xml转换没有收到此错误消息? 我不能改变registry,我不能使用任何第三方实用程序。

在OpenXML中设置DefinedNames,为Excel中的所有工作表设置打印标题

我的最终目标是以编程方式为我的文档中的所有工作表设置Excel的“打印标题”值。 最初我尝试着使用SpreadsheetPrintingParts对象( 基于这个问题 ) – 但是,这需要生成一个基本的64string,它看起来必须来自一个现有的文件。 (我从头开始生成电子表格。) 这篇文章然后告诉我,我可以将“Print_Titles”设置为我需要的行上定义的名称。 我一直试图以编程方式做,但这似乎破坏了我的所有文件。 我的代码: var definedNamesCol = new DefinedNames(); //Create the collection var definedName = new DefinedName() { Name = "_xlnm.Print_Titles", Text = "\'SheetName\'!$2:$2", LocalSheetId = (UInt32) (_nextSheetId – 1) }; // Create a new range definedNamesCol.Append(definedName); // Add it to the collection _workbookPart.Workbook.Append(definedNamesCol); 我也看过OpenXML的生产力工具,它表明:(基本上相同) DefinedNames definedNames1 = new […]