我有以下代码:
for (int r = 0; r < rows.Count(); r++)
{
var cells = rows[r].Elements<Cell>().ToList();
for (int c = 0; c < cells.Count(); c++)
{
SharedStringTablePart shareStringPart = spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringItem[] items = shareStringPart.SharedStringTable.Elements<SharedStringItem>().ToArray();
int v = int.Parse(cells[c].CellValue.Text);
text = items[v].InnerText;
}
以及以下excel文件:
但是这段代码崩溃了
我调试它并查看第 2 行的每个单元格的CellValue
(我的v
变量)。
cell[0] = 33
(它得到正确的值PQ-10387
)
单元格1 =22
单元格[2] = 198
但
cell[3] =310
和这个值是cell相同的值!我的代码有什么问题?
发现,当单元格存储一个数字时,则CellValue
具有单元格的值并且DataType
为空,否则DataType
具有值并CellValue
存储索引。所以,这段代码工作正常:
for (int r = 0; r < rows.Count(); r++)
{
var cells = rows[r].Elements<Cell>().ToList();
for (int c = 0; c < cells.Count(); c++)
{
SharedStringTablePart shareStringPart = spreadsheetDocument.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringItem[] items = shareStringPart.SharedStringTable.Elements<SharedStringItem>().ToArray();
if (cells[c].DataType != null)
{
if (cells[c].CellValue != null)
{
int v = int.Parse(cells[c].CellValue.Text);
text = items[v].InnerText;
}
}
else
text = cells[c].CellValue?.Text;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句