【发布时间】:2019-03-08 10:30:00
【问题描述】:
我需要使用 OpenXML 循环 .xlsx 行。当单元格值与我的字符串匹配时,我需要从下一列同一行的单元格中读取值。这是我目前所拥有的:
using (FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (SpreadsheetDocument doc = SpreadsheetDocument.Open(fs, false))
{
WorkbookPart workbookPart = doc.WorkbookPart;
SharedStringTablePart sstpart = workbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringTable sst = sstpart.SharedStringTable;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
Worksheet sheet = worksheetPart.Worksheet;
var rows = sheet.Descendants<Row>();
foreach (Row row in rows)
{
foreach (Cell c in row.Elements<Cell>())
{
if ((c.DataType != null) && (c.DataType == CellValues.SharedString))
{
int ssid = int.Parse(c.CellValue.Text);
string str = sst.ChildElements[ssid].InnerText;
if (str == "Date of birth:")
{
Cell next_cell = row.Descendants<Cell>().ElementAt(ssid + 1);
MessageBox.Show(next_cell.CellValue.Text);
}
}
}
}
}
}
这并没有显示来自正确单元格的值,所以请有人指出我在 OpenXML 中执行此操作的正确方法。
编辑:很高兴知道如何在循环外定义一个单元格。
【问题讨论】: