我在获取第一个工作表 linqtoexcel 时遇到问题。
我的代码:
var vitem = from oSelectedSheet in vFile.Worksheet<users>(1) select oSelectedSheet;
如果文件中的默认表 (sheet1) 不存在,则此代码无法提供我需要的内容。
这行得通,
var vFile = new LinqToExcel.ExcelQueryFactory(sTargetFileName);
var worksheetNames = vFile.GetWorksheetNames();
worksheetNames.First()//got
要按位置获取第一个工作表,您需要使用 DocumentFormat.OpenXml。获得名称后,您可以使用 LinqToExcel 按名称获取工作表的内容。
string firstWorksheetName = null;
using (SpreadsheetDocument document = SpreadsheetDocument.Open(path, false))
{
var workbookPart = document.WorkbookPart;
firstWorksheetName = document.WorkbookPart.Workbook
.Descendants<Sheet>()
.OrderBy(d => d.SheetId.Value)
.FirstOrDefault()
?.Name.ToString();
}
var results = new List<MappedType>();
using (var excel = new ExcelQueryFactory(path))
{
... // set up database engine, access and any mapping
results = excel.WorksheetRange<MappedType>("A2", "J16384", firstWorksheetName).ToList();
}
if (results.Count() != 0) {
... // Do stuff
}