通过Linq更改Excel工作表的列名称或属性

时间:2014-08-09 17:35:19

标签: c# excel linq linq-to-excel

我想知道如何将工作表的列名或属性提升为大写,而不知道它们的内容有多少或者内容是什么?

我目前的代码如下:

var excel = new ExcelQueryFactory(fileLocation);
var dataSheet = from c in excel.Worksheet(0) select c;

3 个答案:

答案 0 :(得分:1)

假设列名在工作表的第一行,我建议使用LinqToExcel提供的WorksheetNoHeader()方法。然后,您可以检索第一行并遍历所有列名称。

这是一个代码示例:

var excel = new ExcelQueryFactory(fileLocation);
var firstRow = excel.WorksheetNoHeader().First();

var columnNames = new List<string>();
foreach (var cell in firstRow)
  columnNames.Add(cell.ToString());

答案 1 :(得分:1)

您可以使用打开的Office库。

下面的代码将为您提供大写的列文本(考虑第一行有列名)

List<string> columnNames = new List<string>();
var worksheetPart = (WorksheetPart)spreadsheetDocument.WorkbookPart.GetPartById(sheet.Id);
var sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();

foreach (var r in sheetData.Elements<Row>())
{
    var columnIndex = 0;
    if (r.RowIndex == "1") // Column Header
    {
        foreach (var c in r.Elements<Cell>())
        {
            columnNames.Add(GetCellValue(spreadsheetDocument.WorkbookPart, c).ToUpper());
        }
    }

答案 2 :(得分:0)

显而易见的方法是从变量dataSheet中隔离适当的单元格(代表表格列名的单元格)(您可以通过循环,硬编码或(理想情况下)来完成此操作通过更有效的方式,如果你知道一个)。然后使用String#toUpper()方法将每个String值提升为大写和&amp;将它们注射回各自的细胞中。