Tag: openxml

获取单元格设置了WrapText的行的高度

我试图计算我插入到我的Excel表中的行的高度。 行的单元格用WrapText=true格式化,所以行的高度不固定。 访问row.Height将返回null。 我正在考虑使用类似于Graphics.MeasureString东西,我也指定宽度约束,以检索高度。 没有在网上find任何相关的信息。 任何帮助,将不胜感激。

密码保护生成的Excel工作表

我的代码生成一个OpenXML电子表格,我想防止修改和删除操作。 我的解决scheme似乎工作,但我发现,在Excel中打开它,在“审查”面板中,我可以推动“解除保护”button,和Excel取消保护选定的工作表,而不要求任何密码。 我怎样才能避免这一点? String password = Guid.NewGuid().ToString().Replace("-", string.Empty).Substring(0, 16); using (SpreadsheetDocument excelDoc = SpreadsheetDocument.Open(input, true)) { foreach (WorksheetPart worksheetPart in excelDoc.WorkbookPart.WorksheetParts) { SheetProtection sp = new SheetProtection() { Sheet = true, SelectLockedCells = false, SelectUnlockedCells = false, Password = password, Objects = true, Scenarios = true, // AlgorithmName = "SHA-256" }; foreach (OpenXmlElement currentChildElement in […]

冻结窗格和Openxml中的列

我需要帮助。 我有一个问题要问使用OpenXMLWriter。 我目前使用下面的代码来创build我的Excel文件,但我想设置列和冻结窗格的宽度。 我应该怎么做? 因为我已经为此写了下面的代码。 我不知道为什么不工作。 例子会非常有帮助。 感谢它,谢谢! public bool ExportData(DataSet ds, string destination, List<Tuple<string, string>> parms) { using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(destination, SpreadsheetDocumentType.Workbook)) { WorkbookPart wbp = spreadsheetDocument.AddWorkbookPart(); WorksheetPart wsp = wbp.AddNewPart<WorksheetPart>(); Workbook wb = new Workbook(); FileVersion fv = new FileVersion(); fv.ApplicationName = "Microsoft Office Excel"; Worksheet worksheet = new Worksheet(); SheetData sheetData […]

Excel保存文档时如何在编辑后保留OpenXml单元格属性?

我想导出一个excel文件与数据,以便我的用户可以: 下载一个Excel文件(从我的程序导出) 编辑文件中的数据 保存 上传Excel文件(将其重新导入到我的程序中) 基本上我会给他们一个离线文件的经验,如果他们没有互联网访问权限,他们可以编辑(因为我们是一个networking应用程序) 使用OpenXml SDK创buildExcel文件时,我使用OpenXmlElement.SetAttribute方法将属性添加到工作表的列,行和单元格中。 我添加的属性用于重新导入时,我可以将编辑的数据与应该存储的位置相匹配。 我输出的属性是: 数据库ID的 原始值(导出时的数据库值,以便于导入同步) 导出数据的上次修改date 导出例程如下所示: var cell = new Cell { CellReference = string.Format("{0}{1}", Column.Reference, Row.Index), DataType = this.CellDataType }; foreach (var keyValuePair in this.AttributeDictionary) { cell.SetAttribute(new OpenXmlAttribute { LocalName = keyValuePair.Key, Value = keyValuePair.Value.ToString() }); } 这个出口工作正常。 在OpenXml生产力工具中检查导出的文件时,可以看到正确添加的属性。 在Excel中编辑后保存文件时,不保留属性。 有没有办法告诉Excel保存的属性,或者是否有另一个程序,这里是最好的用来保存我需要的数据,以便轻松重新input数据? 边问题: 如果Excel不保留它们,属性是什么?

用VB.Net中的OpenXML修改单元格

我不知道为什么我很难为这个简单的任务find例子,但是根据我的Google-Fu技能没有任何显示。 我正在寻找使用OpenXML和VB.Net修改现有电子表格单元格的示例。 我想改变现有的价值到一个新的,没有公式涉及。 这是我有什么: Public Sub Main() Dim strSource, strSheetName As String Dim dtPeriod As DateTime strSource = Dts.Variables("sFilePath").Value 'set period to previous month. We only care about the year in this period as the data will be reloaded 'from the file each month dtPeriod = DateAdd(DateInterval.Month, -1, Today) Dts.Variables("dtPeriod").Value = dtPeriod Using mySpreadSheet As […]

我如何在Silverlight中使用OpenXml(Office)?

我安装了这个SDK在我的Silverlight应用程序中使用OpenXml。 目的是在没有安装应用程序的情况下从Excel导入数据。 但是我意识到我不能像System.IO.Packages一样在Silverlight中使用一些程序集,所以我不知道如何从Excel中获取数据。 你知道从CodePlex或其他网站获得一些数据的自由组装吗?

EPPlus可以区分Excel工作表中的空白单元格和空白文本单元格吗?

我正在使用EPPlus .NET库(v4.0.4)来解释保存的Excel工作簿。 在一个这样的工作表中,一些空单元格已经使用Excel的“撇号”技巧(也就是说,用户在这些单元格中input了单个撇号,以便Excel将它们显示为空白)设置为“文本”格式。 两个这样的单元格的示例XML如下所示: <cr="F6" s="1" t="inlineStr"> <is> <t /> </is> </c> <cr="G6" s="1" /> 在这里,F6有一个撇号(即,是一个空的文本单元格),G6是真正的空白。 有可能使用EPPlus读取这个“内联string”( inlineStr )属性或者区分这两个单元格吗? ExcelRange / ExcelRangeBase类具有诸如Value , Formula , Style等属性,但是在检查表示上述两个单元格的对象时,我看不到它们之间的任何差异。 我知道我可以通过阅读原始XML或使用替代库(可能是ClosedXML或类似的)手动执行此操作,但是如果可能的话,我想使用EPPlus来执行此操作。

OpenXML电子表格在Excel中损坏

我正在使用OpenXML(2.5)来创build自定义电子表格。 在我使用的虚拟机上,我只有OpenXML的电子表格工作正常(自定义格式和一切)的Open Office。 但是,将文件移动到使用Microsoft Office的计算机时,由于数据损坏,每个版本的文件都无法打开。 我拿出所有的定制,仍然有一个损坏的结果(这仍然在开放办公室工作)。 这是我有一个裸露的骨骼电子表格文件,这又是,在Open Office中工作,但在Excel中被视为损坏的代码。 public string CreateGrid() { var path = Path.GetTempFileName(); var document = SpreadsheetDocument.Create(path, SpreadsheetDocumentType.Workbook); var workbookpart = document.AddWorkbookPart(); workbookpart.Workbook.Save(); document.Close(); return path; } 我得到的错误是“在文本内容中find无效字符”。 行:1列:1文件偏移量:0正如你可以在代码中看到的,我没有添加任何文本,但我相当肯定它不是非法字符。 任何帮助将不胜感激。

如何为Excel 2010中的所有三个date兼容性设置生成SpreasheetML示例?

根据ECMA-376第二版,第1部分 – 基础和标记语言参考 SpreadsheetML支持具有三种可能的兼容性设置和各种范围的date序列值。 http://www.documentinteropinitiative.com/implnotes/ISO-IEC29500-2008/001.018.017.004.001.000.000.aspx 在1900年的date基础系统中,下限是1999年1月1日,它的序列号是-4346018。 这个数据库系统的基准date是1899年12月30日,它的序列号为0。 在1900向后兼容date库系统中,下限是1900年1月1日,它的序列值为1.此date系统的基准date为1899年12月31日,序列值为0。 在1904年的向后兼容date库系统中,下限是1904年1月1日,它具有序列值0.该date基础系统的基准date是1904年1月1日,其序列值为0。 但是,当使用Microsoft Office Excel 2010生成date序列为1的* .xlsx文件时,* .xlsx文件没有设置任何dateCompatibility属性(表示“1900date基本系统”),而是与date序列号1是1900年1月1日(表示“1900向后兼容性”)。 workbookPr元素是这个,未经编辑的,没有dateCompatibility属性。 <x:workbookPr defaultThemeVersion="124226" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main" /> 下面是一行数据,显示date序列1和格式化为date的文本结果: <x:row r="3" spans="1:2"> <x:cr="A3"> <x:v>1</x:v> </x:c> <x:cr="B3" t="str"> <x:ft="shared" si="0" /> <x:v>1900-01-01 00:00:00.0</x:v> </x:c> </x:row> 该公式只是date格式,在工作表中前面引用: <x:ft="shared" ref="B1:B42" si="0">TEXT(A1, "yyyy-mm-dd HH:mm:ss.0")</x:f> 此公式给出与将date格式图案应用于date序列号相同的结果,在下面的屏幕截图中显示。 同样格式化否定date会导致错误,另一个指标是Excel实际上使用向后兼容的date系统,尽pipedateCompatibility上没有dateCompatibility属性。 工作簿的选项仅显示1904年date系统的未选中checkbox。 我没有看到1900年的date为1900年向后兼容的选项。 我读的规格错了吗? 还是SpreadsheetML? 或者是其他东西?

如何dynamic填充自定义function区上的菜单控件?

For Each ws In Worksheets ListBox1.AddItem ws.Name Next ws ListBox1_Click() Worksheets(ListBox1.Value).Activate 我可以用自定义function区上的菜单控件来做同样的事情吗? XML: <menu id="mnuCats" label="abc" size="large" imageMso="PropertySheet" > <button id="go01" label="sky" onAction="go01" imageMso="TextAlignGallery" /> <button id="go02" label="sea" onAction="go02" imageMso="TextAlignGallery" /> </menu> 那么,如何用表格名称填充菜单以及如何将button的标签属性作为string来激活相应的表单。