using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
namespace ReadXlsx
{
class Program
{
const string xslPath = @"C:\temp\20190725\test.xlsx";
static void Main(string[] args)
{
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(xslPath, false);
WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
SharedStringTablePart sharedStringTablePart = workbookPart.SharedStringTablePart;
SharedStringTable sharedStringTable = sharedStringTablePart.SharedStringTable;
List<SharedStringItem> sharedStringItems = sharedStringTable.Elements<SharedStringItem>().ToList();
List<Sheet> sheets = workbookPart.Workbook.Sheets.Cast<Sheet>().ToList();
List<WorksheetPart> worksheetParts = workbookPart.WorksheetParts.ToList();
List<SheetData> sheetDatas = worksheetParts.SelectMany(x => x.Worksheet.Elements<SheetData>()).ToList();
foreach (Sheet sheet in sheets)
{
Console.WriteLine($"{sheet.Name.Value}: {sheet.Id}");
string rid = sheet.Id;
WorksheetPart worksheetPart = workbookPart.GetPartById(rid) as WorksheetPart;
SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().Single();
List<Row> rows = sheetData.Elements<Row>().ToList();
Console.WriteLine($"Row count: {rows.Count}");
foreach (Row row in rows)
{
List<Cell> cells = row.Elements<Cell>().ToList();
Console.WriteLine($"Cell count: {cells.Count}");
foreach (Cell cell in cells)
{
if (cell.DataType == "s")
{
Console.WriteLine(sharedStringItems[int.Parse(cell.CellValue.Text)].Text.Text);
}
else
{
Console.WriteLine(cell.CellValue.Text);
}
}
Console.WriteLine("=======================================================================================");
}
Console.WriteLine("=======================================================================================");
}
spreadsheetDocument.Close();
}
}
}
Comments