我在c sharp中運行了一些基於openXML的代碼,這些代碼卡在第一行數據上並且一次又一次地循環。我很清楚,我需要將行變量合併到混合中,但嘗試過各種方法無濟於事。任何人有任何想法呢?從電子表格中讀取OpenXML卡在第一行
在下面的代碼塊中,sst.ChildElements [7] .InnerText獲取第一行第7列的內容,但每次循環它的內容都來自同一個CELL!我想移動到下一行:-(
string fileName = @"c:\temp\accountData.xlsx";
using (FileStream fs = new FileStream(fileName, 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 cells = sheet.Descendants<Cell>();
var rows = sheet.Descendants<Row>();
Console.WriteLine("Row count = {0}", rows.LongCount());
Console.WriteLine("Cell count = {0}", cells.LongCount());
CompanyProvider cp = _db.GetCompanyProvider();
int i = 0;
// Or... via each row
foreach (Row row in rows.ToList())
{
if (i == 0)
i = i + 1;
else
{
CustomerAddress customerAddress = new CustomerAddress();
customerAddress.AddressLine1 = sst.ChildElements[7].InnerText; // Code hidden for brevity
i = i + 1;
}
}
}
}
你有一個foreach,但你從不使用行對象。爲什麼? – SergeyAn
我使用行對象進行的任何嘗試都無法使其工作。 row.Elements可能是開始,但無法獲得我需要的表達式。我想通過0,1,2,3,4列中的每一列逐行引用列,因此我可以在db中填充字段。示例所有循環單元格 – John
是否所有單元格都填充在電子表格中?例如,如果你有一行空的第一個單元格,那麼'ChildElements [7]'將是第8個單元格。您也可以使用'foreach(row.Skip(1).ToList())行'而不是整數檢查 –