OpenXML Spreadsheet获取列序数索引

时间:2014-03-06 09:24:19

标签: c# openxml spreadsheet

我正在使用OpenXML库创建Excel导出。我可以使用默认的单元格引用设置单元格引用,例如A1。

由于我想动态填充列中的数据,我想知道是否可以使用数字坐标参考,例如细胞[1,1]?

所以不要做类似的事情:

Cell cell = InsertCellInWorksheet("A", 1, worksheet);

我想这样做:

Cell cell = InsertCellInWorksheet(columnIndex, rowIndex, worksheet);

我似乎找到了许多使用Excel网格参考(“A1”)的例子,但没有用于数字表示。

非常感谢

安迪

更新

我找到了一种通过此here的答案获取列标题的方法,该方法根据数字索引计算列名。

这使得列很好,我可以单步执行代码,并且可以看到它在Z,AA,AB等列中循环。我现在发现,当迭代列中的任何内容时,如果它构建了ZI之后的任何内容,则会出现错误消息Excel found unreadable content in...Do you want to recover the contents of this workbook? If you trust the source of this workbook, click Yes.

这是设置单元格的代码:

int columnIndex = 1;
string col;
uint rowIndex = 60;
foreach (var item in _data)
{
    col = ExcelHelper.GetColumnName(columnIndex);
    ExcelHelper.SetCell(wsp, col, rowIndex, item.PeriodEnd.ToString("dd/MM/yyyy"), excelStylesheet.TableCell);
    columnIndex++;
}

如果我将col编写为“AA”并将rowIndex设置为递增,则它可以正常工作但是像这样会生成一个不可读的Excel文件。

我无法看到如何/为什么会发生这种情况,因为我可以看到col正确地设置了代码,但似乎某些地方出现了错误。

任何人都可以帮助解释可能导致这种情况的原因或知道更好地识别问题的方法吗?

再次感谢

安迪

1 个答案:

答案 0 :(得分:2)

您可以使用以下代码

row.Append(newCell);

而不是

row.InsertBefore(newCell, refCell);

Open XML SDK: get "Unreadable content" error when trying to populate more than 25 columns