【问题标题】:Get Names of all Columns in Excel sheet in SpreadSheetLight在 SpreadSheetLight 中获取 Excel 工作表中所有列的名称
【发布时间】:2019-07-08 17:42:50
【问题描述】:

我正在尝试使用电子表格中的列名称填充组合框。 我正在使用电子表格灯库。我可以使用以下代码设置单元格值,其中A 指的是列名,1 指的是行名。 (我说的对吗?)

但是如何获取所有工作表中所有列的名称?

SLDocument sl = new SLDocument();    
sl.SetCellValue("A1", true);

【问题讨论】:

    标签: c# excel spreadsheetlight


    【解决方案1】:

    首先,使用SLWorksheetStatistics获取最后一列索引:

    SLWorksheetStatistics stats = sl.GetWorksheetStatistics();
    int endColumnIndex = stats.EndColumnIndex;
    

    然后遍历列:

    var headers = new List<string>();
    for (int i = 1; i <= endColumnIndex; i++){
        headers.Add(sl.GetCellValueAsString(1, i));
    }
    

    以下将打印列列表中的值“foo”和“bar”:

    var fileName = "test.xlsx";
    var sl = new SLDocument(fileName);
    
    foreach (var sheetName in sl.GetWorksheetNames())
    {
        SLDocument sheet = new SLDocument(fileName, sheetName);
        sheet.SetCellValue("A1", "foo");
        sheet.SetCellValue("B1", "bar");
    
        SLWorksheetStatistics stats = sheet.GetWorksheetStatistics();
        int endColumnIndex = stats.EndColumnIndex;
    
        var headers = new List<string>();
        for (int i = 1; i <= endColumnIndex; i++)
        {
            headers.Add(sheet.GetCellValueAsString(1, i));
        }
    
        foreach (var column in headers)
        {
            Console.WriteLine(column);
        }
    
        Console.ReadKey();
    }
    

    【讨论】:

    • 谢谢..会检查并回复。
    • 我尝试使用您的代码填充组合框,但没有返回列名..组合框返回文件名..我像这样foreach (var column in headers) { comboBox1.Items.Add(column); } 填充了组合框
    • 我已将 stats.EndowIndex 更正为 stats.EndColumnIndex 并添加了一个完美运行的解决方案
    • 您的代码运行良好.. 但是超过 1 个工作表的文件呢?
    • @techno SLDocument 是一张工作表,您需要有一个for 循环遍历每个工作表并运行上述代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多