Пример #1
0
        /// <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);
                }
            }
        }