Excel的C#OpenXML的:我怎么能在Excel中添加新行后获得单元格的位置,(Row row = new Row()); 没有使用Excel国际刑警组织或macros
我的问题是关于获得在Excel中的单元格的位置,而不使用Excel国际刑警组织或macros。 只是C#和OpenXML。 (A3)的位置。
当你有你的单元格对象时,这样做得到string“A1”例如:
myCell.CellReference.Value
如果你想通过引用find一个单元格,请执行以下操作:
public static Cell getCellByReference(string cellReference, Worksheet ws) { return ws.Descendants<Cell>().Where(c => c.CellReference.Value == cellReference).FirstOrDefault(); } Cell myCell = getCellByReference("A1", actualWorksheet)
有一本叫做Open XML Explained的有用的电子书,是早期写的(2007?)。 它解释了许多OpenXML规范的复杂细节。
电子书说有两种方法来确定一个单元格的位置:与CellRefernece属性或没有CellReference属性。
使用CellReference属性
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> (from p.60) <sheetData> <row r="5"> <cr="E5"> <v>1234</v> </c> </row> </sheetData> </worksheet>
这是更简单的情况。 读取单元格数据时,可以像上面的单元格和行标签的r
属性一样存在单元格引用属性。 如果是的话,这个CellReferernce属性是一个stringforms的“A1”或“G32”,其中的字母表示列和数字表示的行。 上面的单元格具有对应于电子表格的第5行E列的“E5”的CellReference。 你会想读取这个值来确定单元格的位置。 这里是一个SO问题和答案 ,可以帮助您parsingCellReferencestring,并获取列索引来帮助确定位置。
没有CellReference属性
<worksheet xmlns="http://.../spreadsheetml/2006/main"> (see p. 58) <sheetData> <row> <c> <v>42</v> </c> </row> </sheetData> </worksheet>
CellRefence属性不能保证,就像上面的xml一样。 如果CellReference不存在,则需要根据文件中数据的位置确定位置。 所以,第一行数据对应于电子表格的第一行。 与一行内的单元格位置相同。
- C#如何将Excel.workbook转换为IntPtr传递到导出的dll函数
- 通过C#中的名称引用更新Excel单元格值
- Open XML SDK 2.0 – 如何更新电子表格中的单元格?
- 如何避免使用c#excel introp将多个工作表添加到工作簿中的COMException?
- 我可以创build一个图像从Excel文件使用C#
- 不能将types“对象”隐式转换为“Microsoft.Office.Interop.Excel.Worksheet”。 存在明确的转换(您是否缺less演员?)
- 在C#中的OleDbConnection
- 如何在不进行汇总的情况下将值添加到数据透视图?
- Excel插件。 缺lessfunction区(XMl)