先贴代码后简单解释:
public static object[,] BuildTable(Stream inputStream)
{
object[,] table = null;
using (var doc =
SpreadsheetDocument.Open(
inputStream, false))
{
Sheet sheet = doc.WorkbookPart.Workbook.Descendants<Sheet>().FirstOrDefault();
var worksheetPart = (WorksheetPart) doc.WorkbookPart.GetPartById(sheet.Id);
var headers = worksheetPart.Worksheet.Descendants<Row>()
.FirstOrDefault(x => x.RowIndex == 1);
SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
var allRows = sheetData.Elements<Row>()
.Where(x => x.RowIndex > 1 && !string.IsNullOrEmpty(x.InnerText)).ToList();
var headerCells = headers.Descendants<Cell>().ToList();
var headerCellReferences =
headerCells.Select(c => Regex.Replace(c.CellReference, @"\d+", string.Empty)).ToArray();
SharedStringTablePart sstPart = doc.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First();
SharedStringTable ssTable = sstPart.SharedStringTa