微信小程序生成Excel文件(.Net Core)

一:服务端返回字节流,小程序写文件

(1)后端代码 .Net Core 用到ExcelPackage

  public async Task<IActionResult> ExportIo([FromBody]Parameter parameter)
    {
        FactoryService factoryService = new FactoryService(_iServiceProvider);
           //获得数据
            var listData = await factoryService.GetAllDataNew(parameter);
            var result = new object();
            using (ExcelPackage excelPackage = new ExcelPackage())
            {
                ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("YuHong");
                worksheet.Cells[1, 1].Value = "生产线";
                worksheet.Cells[1, 2].Value = "生产工厂";
                worksheet.Cells[1, 3].Value = "生产时间";
                worksheet.Cells[1, 4].Value = "上传时间";
                worksheet.Cells[1, 5].Value = "12位转换码";
                worksheet.Cells[1, 6].Value = "16位防窜码";
                var rowNum = 2;
                foreach (var queryResult in listData)
                {
                    worksheet.Cells["A" + rowNum].Value = queryResult.Beltline;
                    worksheet.Cells["B" + rowNum].Value = queryResult.Factory;
                    worksheet.Cells["C" + rowNum].Value = queryResult.MakeTime;
                    worksheet.Cells["D" + rowNum].Value = queryResult.UpDate;
                    worksheet.Cells["E" + rowNum].Value = queryResult.ConvertCode;
                    worksheet.Cells["F" + rowNum].Value = queryResult.ProductCode;
                    rowNum++;
                }
                using (var cells = worksheet.Cells[1, 1, 1, 6])
                {
                    cells.Style.Font.Bold = true;
                    cells.Style.Fill.PatternType = ExcelFillStyle.Solid;
                    cells.Style.Fill.BackgroundColor.SetColor(Color.LightGray);
                }
                //返回二进制字节数组
                result = excelPackage.GetAsByteArray();
            }
            return new FileContentResult((byte[])result, "application/x-xls");      
    }

(2)前端代码

var reqTask = wx.request({
        url: "http://localhost:5000/api/download/exportIo",
        data: {
            xxxxx:xxxxxx"
        },
        header: { "content-type": "application/json", cookie: cookie },
        method: "POST",
        dataType: "json",
        responseType: "arraybuffer",//注意这里的responseType
        success: result => {
          console.log(result);
            var fileManager = wx.getFileSystemManager();
            var FilePath = wx.env.USER_DATA_PATH + "/" + "dataFile.xlsx";
            fileManager.writeFile({
              data: result.data,
              filePath: FilePath,
              encoding: "binary",//编码方式 
              success: result => {
                wx.openDocument({ //我这里成功之后直接打开
                  filePath: FilePath,
                  fileType: "xlsx",
                  success: result => {
                    console.log("打开文档成功");
                  },
                  fail: result => {
                    console.log(result);
                  }
                });
                wx.hideLoading();
              },
              fail: res => {
                console.log(res);               
              }
            }),

二:后端生成excel文件,返回下载地址,供小程序下载
ExcelPackage.Save() 保存数据到本地Excel文件中,返回文件地址

public async Task<string> Export([FromBody]Parameter parameter)
        {
           string sWebRootFloder = _hostingEnvironment.WebRootPath;
            string sFileName = @"bak/DataFile.xlsx";
            string URL = string.Format("{0}://{1}/{2}", Request.Scheme, Request.Host, sFileName);
            FileInfo file = new FileInfo(Path.Combine(sWebRootFloder, sFileName));
            if (file.Exists)
            {
                file.Delete();
                file = new FileInfo(Path.Combine(sWebRootFloder, sFileName));
            }
            FactoryService factoryService=new FactoryService(_iServiceProvider);
            var ListData = await factoryService.GetAllData(parameter);
            using (ExcelPackage excelPackage = new ExcelPackage(file))
            {
                ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("YuHong");
                worksheet.Cells[1, 1].Value = "生产线";
                worksheet.Cells[1, 2].Value = "生产工厂";
                worksheet.Cells[1, 3].Value = "生产时间";
                worksheet.Cells[1, 4].Value = "上传时间";
                worksheet.Cells[1, 5].Value = "16位防窜码";
                var rowNum = 2;
                foreach (var queryResult in ListData)
                {
                    worksheet.Cells["A" + rowNum].Value = queryResult.Beltline;
                    worksheet.Cells["B" + rowNum].Value = queryResult.Factory;
                    worksheet.Cells["C" + rowNum].Value = queryResult.MakeTime;
                    worksheet.Cells["D" + rowNum].Value = queryResult.UpDate;
                    worksheet.Cells["E" + rowNum].Value = queryResult.ProductCode;
                    rowNum++;
                }
                using (var cells=worksheet.Cells[1,1,1,5])
                {
                    cells.Style.Font.Bold = true;
                    cells.Style.Fill.PatternType = ExcelFillStyle.Solid;
                    cells.Style.Fill.BackgroundColor.SetColor(Color.LightGray);
                }
                excelPackage.Save();
            }

            return URL;
        }

在这里插入图片描述

                    var fileManager = wx.getFileSystemManager();
                    var FilePath = wx.env.USER_DATA_PATH + "/" + "dataFile.xlsx";
                    var downTask = wx.downloadFile({
                      url: this.fileUrl,
                      success: result => {
                        fileManager.saveFile({
                          tempFilePath: result.tempFilePath,
                          filePath: FilePath,
                          success: result => {
                            if (result.errMsg == "saveFile:ok") {
                              wx.openDocument({
                                filePath: FilePath,
                                fileType: "xlsx",
                                success: result => {
                                  console.log("打开文档成功");
                                },                          
                              });
                            }
发布了1 篇原创文章 · 获赞 0 · 访问量 921

猜你喜欢

转载自blog.csdn.net/chenyishan007/article/details/101027073