/// <summary>从Excel文件加载成果集合</summary> public void LoadProducts(IndexSubmissionContext context) { context.StartProgress("正在加载Excel文件...", -1); var excelFile = this.Config.Product.ExcelFile; var excelSheet = ExcelUtil.OpenFirst(excelFile); var excelTable = excelSheet.ToDataTable(1, 2); var orderColumn = excelTable.Columns[SubmissionConsts.ST_ProductOrder]; var encodingColumn = excelTable.Columns[SubmissionConsts.ST_TextEncoding]; var ptFileColumn = excelTable.Columns[SubmissionConsts.ST_ProductFile]; var optionsColumn = excelTable.Columns[SubmissionConsts.ST_Options]; var total = excelTable.Rows.Count; context.StartProgress("正在生成成果数据...", total); for (int i = 0; i < total; i++) { var row = excelTable.Rows[i]; var product = new SubmissionProduct(); product.ID = row[orderColumn].ConvertTo <int>(); if (encodingColumn != null) { product.CharSet = row[encodingColumn]?.ToString(); } product.File = row[ptFileColumn].ToString(); product.Ext = product.File.GetExtension(); if (optionsColumn != null) { product.Options = row[optionsColumn]?.ToString(); } try { product.IndexData = BuildIndexData(excelSheet, row); BuildPageData(product.IndexData); product.AppData = BuildAppData(product, product.IndexData); context.Values.Enqueue(product); context.NextProgress(); } catch (Exception ex) { var tag = ex.Data["IndexTag"]?.ToString() ?? string.Empty; var message = $"序号={product.ID.ToString()},成果文件=[{product.File}]生成索引数据失败[标签={tag}]," + ex.Message; throw new Exception(message, ex); } } }