我想知道如何在不知道有多少或它们的内容是什么的情况下将工作表的列名或属性提升为大写?
我目前的代码如下:
var excel = new ExcelQueryFactory(fileLocation);
var dataSheet = from c in excel.Worksheet(0) select c;
我想知道如何在不知道有多少或它们的内容是什么的情况下将工作表的列名或属性提升为大写?
我目前的代码如下:
var excel = new ExcelQueryFactory(fileLocation);
var dataSheet = from c in excel.Worksheet(0) select c;
您可以使用开放的 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());
}
}
假设列名位于工作表的第一行,我建议使用WorksheetNoHeader()
LinqToExcel 提供的方法。然后,您可以检索第一行并遍历所有列名。
这是一个可能看起来像的代码示例:
var excel = new ExcelQueryFactory(fileLocation);
var firstRow = excel.WorksheetNoHeader().First();
var columnNames = new List<string>();
foreach (var cell in firstRow)
columnNames.Add(cell.ToString());
这样做的明显方法是将适当的单元格(代表表格列名的单元格)从变量中分离出来dataSheet
(如果你知道的话,你可以通过循环、硬编码或(理想情况下)通过更有效的方式来做到这一点一)。然后使用该String#toUpper()
方法将每个字符串值提升为大写并将它们注入各自的单元格。