先贴代码后简单解释:
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.Sh

本文介绍如何利用C#和Open XML SDK来读取Excel文件。关键点在于,由于Excel单元格可能存在空值导致列数不固定,因此采用列头(如A、B、C等)作为定位依据,而非索引。代码示例展示了将Excel中的列头标准化为A、B、C等,以便后续处理。
最低0.47元/天 解锁文章
1390

被折叠的 条评论
为什么被折叠?



