Tag: openxml

openXML(C#)支持生成格式化的数字字段(如1,000,000)

我有现成的代码,使用OpenXML从Excel生成电子表格。 它工作正常,但我总是不得不进入电子表格后添加格式。 有没有反正在我的C#代码我可以指定,我想要格式化一定数字格式的列)逗号,小数等? 任何示例的链接都会很好。 这里是我现在如何保存数据: public void SetCell<T>(string column, uint rowIndex, T value) { SheetData sheetData = _positionSheet; Cell cell = GetCell(sheetData, column, rowIndex); string stringValue = value == null ? "" : value.ToString(); cell.CellValue = new CellValue(stringValue); switch (typeof(T).Name) { case "Date": case "DateTime": cell.DataType = CellValues.Date; break; case "Int32": cell.DataType = CellValues.Number; break; […]

openxml如何用OpenXmlReader读取inlineStr

我有以下代码: public static void ReadExcelFileSAX(string filename) { using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open(filename, true)) { WorkbookPart workbookPart = myDoc.WorkbookPart; WorksheetPart worksheetPart = workbookPart.WorksheetParts.First(); OpenXmlReader reader = OpenXmlReader.Create(worksheetPart); string text; while (reader.Read()) { if (reader.ElementType == typeof(CellValue)) { text = reader.GetText(); } } } } 此代码可以读取数据types为数字的任何单元格,但无法读取inlineStr 用生产力工具查看XML,我认为代码可以阅读下面的XML <x:cr="D2" t="n"> <x:v>328</x:v> </x:c> 但它不能阅读这个(或者我不知道该怎么做) <x:cr="F1" s="6" t="inlineStr"> <x:is> <x:t>T1</x:t> […]

在Excel中编辑embedded在Word文档中的Excel对象

我需要在Word文档中embeddedExcel文档。 我用这个问题的答案 – > 我怎样才能使用OpenXml 2.0embedded任何文件types到Microsoft Word ; 一切工作正常,除了: DrawAspect = OVML.OleDrawAspectValues.Icon允许您通过打开一个新的Excel实例来编辑Excel对象。 但是,当我编辑数据时,它不在Word文档中更新。 DrawAspect = OVML.OleDrawAspectValues.Content使您可以直接在Word文档中编辑Excel对象。 我的问题是,我需要在代码中更改哪些内容才能编辑新实例中的Excel对象,并使其正确反映在Word文档中? 我尝试了一切都无济于事。 有些东西告诉我, DrawAspect = OVML.OleDrawAspectValues.Icon暗示该对象作为一个图标,并且变化不能正确地反映在这个图标。

如何启用Excel工作簿上的“共享”选项?

是否可以通过OpenXML或ClosedXML在Excel文档中启用“共享”? 或者任何其他库,如果它可以帮助…我相信这通常是当您保存文件(至less这是如何在VBA中工作)执行,但我找不到如何在C#中指定保存参数。 我想避免使用InterOp,因为我可能通过networking在多个文件上批量执行此过程。 编辑:根据2009年的一些旧页面 ,OpenXML无法运行受保护的文件是有限制的。 但是,这也适用于分享?

OpenXML(SAX方法) – 将行添加到现有选项卡

我正在尝试使用OpenXML(SAX方法)创build一个Excel文档。 当我的方法被调用时,我想检查是否已经为一个给定的键创build一个选项卡。 如果是我想只追加到该选项卡的底部一行。 如果该选项卡没有创build给定的键我创build一个新的选项卡,如; part = wbPart.AddNewPart<WorksheetPart>(); string worksheetName = row.Key[i].ToString(); Sheet sheet = new Sheet() { Id = document.WorkbookPart.GetIdOfPart(part), SheetId = sheetNumber, Name = worksheetName }; sheets.Append(sheet); writer = OpenXmlWriter.Create(part); writer.WriteStartElement(new Worksheet()); writer.WriteStartElement(new SheetData()); currentrow = 1; string header = Header + "\t" + wrapper.GetHeaderString(3, 2, -1); //need to fix WriteDataToExcel(header, currentrow, 0, writer); […]

OpenXML Excel列格式?

我使用OpenXML SDK 2.0通过OpenXML模板将一些数据导出到Excel中。 我可以把所有东西都导出到Excel中。 但是,该模板有几张纸(实际上都是这样),它们具有应用于列的背景颜色(样式),而不是单元格,因为Excel没有实际引用该单元格。 我正在用这些表格中的数据填充数据行,值设置正确,但是当我将它们设置为单元格的格式时,它将回到默认的白色背景,不再适合表格的其余部分。 如何让单元格inheritance它所在列的样式? 我想要试图查找列,并得到它的风格,并设置单元格的样式,但我不知道如何find一个列的引用。 我可以遍历表中的所有列,但他们不给我他们的参考… 下面是实际将单元插入一行的片段: Cell newCell = new Cell() { CellReference = cellReference }; if (refCell == null) { row.Append(newCell); } else { row.InsertBefore(newCell, refCell); } refCell是从以前的代码,基本上是为了确保单元格按照正确的顺序列出,因为如果Excel不适合,它将适应。 那么设置实际值的部分是: c.CellValue = new CellValue(indx.ToString()); c.DataType = new EnumValue<CellValues>(CellValues.SharedString); indx是共享string表中string的索引。 谁能帮忙? 谢谢

使用OpenXML和C#,Integers和DateTime导出到Excel

我正在写一个应用程序,应该从地图应用程序导出数据。 此应用程序正在使用Silverlight,并方便导出到Excel我正在使用此库。 所有的数据默认都以string表示。 当我写电子表格时,我尝试parsing每个string,看看它是哪种types: string str = kvp.Value; int i = 0; long l = 0; decimal dec = 0; DateTime dt; if (int.TryParse(str, out i)) doc.Workbook.Sheets[0].Sheet.Rows[r].Cells[c].SetValue(i); else if (decimal.TryParse(str, out dec)) doc.Workbook.Sheets[0].Sheet.Rows[r].Cells[c].SetValue(dec); else if (long.TryParse(str, out l)) doc.Workbook.Sheets[0].Sheet.Rows[r].Cells[c].SetValue(l); else if (DateTime.TryParse(str, out dt)) doc.Workbook.Sheets[0].Sheet.Rows[r].Cells[c].SetValue(dt); else doc.Workbook.Sheets[0].Sheet.Rows[r].Cells[c].SetValue(str); 这很好,除了DateTime,当我试图parsing一个社会安全号码,在我的情况是12个字符长。 社会安全号码被parsing为十进制数字,并以科学forms显示在Excel中。 从我通过阅读中得到的信息来看,它似乎是Excel中的一个限制。 如果我标记单元格,但是我在顶部栏中看到了可以写公式的正确数字。 到目前为止,我已经解决了这个问题,简单地把这个数字作为一个string,让最终用户现在处理它,但我真的很希望它是一个在完成文档中的数字。 这可能吗? 但是,我的想法真是令人难以置信的是DateTime。 date格式如下所示:10/15/2013 […]

如何使用PIA(2010,版本14.0)和目标机器创buildExcel应用程序没有安装MS Office客户机

我面临一个问题,实际上我需要in C# using VS2012, .Net framework 4.5创build一个应用程序来读取excel并执行一些操作,但问题是目标机器上没有安装MS Office客户机。 其中一个限制是我不能使用Open XML等其他打开的程序集。我只能使用2010 PIA 。 如果有人能解释我怎么能实现这个,那将会很棒。

工作表和工作表之间的关系

对于MSDN ,SpreadsheetML文档的基本文档结构由表单和表单元素组成,这些元素引用工作簿中的工作表。 例如,有一个带有工作表的工作簿: <workbook xmlns=http://schemas.openxmlformats.org/spreadsheetml/2006/main xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"> <sheets> <sheet name="MySheet1" sheetId="1" r:id="rId1" /> <sheet name="MySheet2" sheetId="2" r:id="rId2" /> </sheets> </workbook> 和两个工作表,如: <?xml version="1.0" encoding="UTF-8" ?> <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> <sheetData> <row r="1"> <cr="A1"> <v>100</v> </c> </row> </sheetData> </worksheet> 我的任务是通过名单的工作表获取工作表。 但我不明白什么是关系beetwen表和工作表。 好的,我在表格中find预期名称为“MySheet2”的工作表,但是如何才能获得适当的工作表? 工作表类没有名称属性或一些“外键”与工作表链接。

如何使用openXML深入克隆.xlsx文件中的行?

我有template.xlsx文件,我必须通过在特定索引中添加一行的几个副本来修改。 当我尝试使用克隆方法进行此操作时,我添加了一行,但每行都相互修改。 我需要创buildopemxml行对象的深层克隆,但是当我尝试这个时,我有一个错误,没有序列化openxml行对象。 如何使用带序列化的openXML深入克隆.xlsx文件中的行,或者如果有另一种方法来深入克隆openxml行对象?