public async Task UploadBatchDelegatesToPublishingEndPoint()
        {
            Mock <IFormFile> file = new Mock <IFormFile>();

            byte[]       contents = { 3, 63, 8, 100 };
            MemoryStream ms       = new MemoryStream();
            StreamWriter writer   = new StreamWriter(ms);

            writer.Write(File.Create("blah blah"));
            await writer.FlushAsync();

            ms.Position = 0;
            file.Setup(_ => _.CopyToAsync(It.IsAny <Stream>(), It.IsAny <CancellationToken>()))
            .Returns((Stream stream, CancellationToken token) => ms.CopyToAsync(stream))
            .Verifiable();
            file.SetupGet(x => x.Length).Returns(contents.Length);
            BatchUploadResponse expectedResponse = new BatchUploadResponse {
                BatchId = Guid.NewGuid().ToString(), Url = "http:whatever"
            };

            _publishingApiClient
            .UploadBatch(Arg.Any <BatchUploadRequest>())
            .Returns(new ApiResponse <BatchUploadResponse>(HttpStatusCode.OK, expectedResponse));

            OkObjectResult result = await _publishController.UploadBatch(file.Object) as OkObjectResult;

            result.Should().NotBeNull();
            result?
            .Value
            .Should()
            .BeSameAs(expectedResponse);
        }
コード例 #2
0
        protected void btnUpload_Click(object sender, EventArgs e)
        {
            string fileName = file.PostedFile.FileName;

            if (string.IsNullOrEmpty(fileName))
            {
                return;
            }
            FileInfo fi = new FileInfo(fileName);

            string[] exts = new string[] { ".xls", ".xlsx" };
            if (!exts.ToList().Exists(ext => ext == fi.Extension))
            {
                this.ltlError.Text = "请上传Excel文件。";
            }
            else
            {
                //上传文件
                fileName = string.Format("{0}Documents\\TempFolder\\{1:ms}_{2}", this.Request.PhysicalApplicationPath, DateTime.Now, fi.Name);
                AsposeHelper.CheckPath(fileName);
                file.PostedFile.SaveAs(fileName);

                string              templateFileName = AsposeHelper.GetTemplateFileName(documentID);
                DataTable           dt       = AsposeHelper.GetTemplateDataTable(documentID);
                BatchUploadResponse response = AsposeHelper.ExcelToDataTable(templateFileName, fileName, dt);
                if (response.IsVerified)
                {
                    PersistData(response.Data);
                }
                ShowResult(response.GetErrors());
            }
        }
コード例 #3
0
        /// <summary>
        /// Excel文件转换为DataTable.
        /// </summary>
        public static BatchUploadResponse ExcelToDataTable(string templateFileName, string fileName, DataTable dt)
        {
            BatchUploadResponse response = new BatchUploadResponse(fileName);

            if (!File.Exists(fileName))
            {
                response.AddError(0, "文件不存在!");
                return(response);
            }

            Workbook workbook = new Workbook();

            // 打开模板
            workbook.Open(templateFileName);
            Worksheet worksheet = workbook.Worksheets[dt.TableName];

            if (worksheet == null)
            {
                response.AddError(0, "模板和配置文件不匹配,请联系管理员。");
                return(response);
            }
            int startRow = worksheet.Cells.MaxDataRow;

            if (startRow > 0)
            {
                startRow += 1;
            }
            // 打开文件
            workbook.Open(fileName);
            worksheet = workbook.Worksheets[dt.TableName];
            if (worksheet == null)
            {
                response.AddError(0, "上传的文件和模板不匹配,请下载最新模板。");
                return(response);
            }

            int maxRow = worksheet.Cells.MaxDataRow;
            int maxCol = worksheet.Cells.MaxDataColumn;

            //datatable = worksheet.Cells.ExportDataTable(0, 0, worksheet.Cells.MaxRow + 1, worksheet.Cells.MaxColumn + 1);

            for (int ii = startRow; ii <= maxRow; ii++)
            {
                DataRow dr = dt.NewRow();
                try
                {
                    for (int jj = 0; jj <= dt.Columns.Count - 1; jj++)
                    {
                        DataColumn col   = dt.Columns[jj];
                        object     value = worksheet.Cells[ii, jj].Value;
                        if (!string.IsNullOrEmpty(col.Namespace))
                        {
                            value = GetMappingValue(col.Namespace, value);
                        }
                        dr[jj] = Utils.DataConvert(col.DataType, value);
                    }
                    dt.Rows.Add(dr);
                }
                catch (Exception ex)
                {
                    response.AddError(ii, ex.Message);
                }
            }
            response.Data = dt;
            return(response);
        }