Чтение данных строк из электронной таблицы

Используя инструменты SpreadSheetLight, я не могу найти способ чтения строк файла электронной таблицы. Конкретно лист 1.

У меня две проблемы

  1. Там нет никакого способа, которым я могу видеть, чтобы получить ряды
  2. Я не вижу способа получить индекс столбца. Вот мой код

    public void ParseExcelFile(FileInfo file) 
    {
        using (SLDocument sl = new SLDocument())
        {
            FileStream fs = new FileStream(file.FullName, FileMode.Open);
    
            MemoryStream msFirstPass = new MemoryStream();
            SLDocument sheet1 = new SLDocument(fs, "Sheet1");
    
    
            // There is no way that I can see to get the Rows
            foreach(var row in sheet1.Rows)
            {
                foreach(SLCell c in row)
                {
                    // There is no way that I can see to get the Column Index
                    switch(c.Column )
                    {
                        case 1:
                            //Handle data if cell is Column 1
                            break;
                        case 2:
                            //Handle data if cell is Column 2
                            break;
                        case 3:
                            //Handle data if cell is Column 3
                            break;
                    }
                }
            }
    
    
    
        }
    
    }//func
    

3 ответа

Решение

Людям будет сложно ответить на этот вопрос, поскольку SpreadSheetLight, по-видимому, не имеет общедоступной документации по коду. У меня есть два предложения, основанные на нескольких предположениях:

  1. Есть ли у класса SLDocument.Row.SLCell свойство индекса? Если это так, вы можете получить необходимую информацию оттуда.
  2. Вы можете заменить свой foreach на for для отслеживания строки и столбца.

Код ниже будет читать каждую строку (при условии, что файл является путем к файлу Excel):

using (SLDocument sl = new SLDocument())
{
    FileStream fs = new FileStream(file, FileMode.Open);
    SLDocument sheet = new SLDocument(fs, "Table 1");

    SLWorksheetStatistics stats = sheet.GetWorksheetStatistics();
    for (int j = 1; j < stats.EndRowIndex; j++)
    {
        // Get the first column of the row (SLS is a 1-based index)
        var value = sheet.GetCellValueAsString(j, 0);

    }
}
      string fileName = @"Test.xlsx";

using FileStream fs = new FileStream(fileName, FileMode.Open);
using SLDocument sl = new SLDocument(fs);

var worksheetNames = sl.GetWorksheetNames();
foreach (var worksheetName in worksheetNames)
{
    sl.SelectWorksheet(worksheetName);
    SLWorksheetStatistics stats = sl.GetWorksheetStatistics();
    for (var i = 1; i <= stats.NumberOfRows; i++)
    {
        for (var j = 1; j <= stats.NumberOfColumns; j++)
        {
            var value = sl.GetCellValueAsString(i, j);
            Console.WriteLine(value);
        }
    }
}
Другие вопросы по тегам