.Net Core 使用CloseXML与ZipFile创建Excel文件并打包下载Zip文件

发布于:2025-02-13 ⋅ 阅读:(145) ⋅ 点赞:(0)

使用CloseXML与ZipFile创建Excel文件并打包下载Zip文件

安装对应的包

在Visual Studio 的NuGet管理中搜索ClosedXML在这里插入图片描述
ZipFileSystem.IO.Compression自带的包

使用ClosedXML读取与下载Excel

读取上传的excel内容

这里写的是由浏览器上传的Excel文件

	[HttpPost]
    public IActionResult UploadExcel(IFormFile file)
    {
        if (file != null && file.Length > 0)
        {
            try
            {
                using (var memoryStream = new MemoryStream())
                {
                    file.CopyTo(memoryStream);
                    using (XLWorkbook workbook = new XLWorkbook(memoryStream))
                    {
                        IXLWorksheet worksheet = workbook.Worksheet(1); // 获取第一个工作表
                        // 在这里可以读取工作表中的数据,并进行进一步的处理

                        // 例如,读取A1单元格的值
                        string valueA1 = worksheet.Cell("A1").Value.ToString();

                        // 在此处可以将读取的数据保存到数据库或进行其他操作

                        return Content("File uploaded and processed successfully.");
                    }
                }
            }
            catch (Exception ex)
            {
                return Content("Error: " + ex.Message);
            }
        }
        else
        {
            return Content("No file uploaded.");
        }
    }

下载Excel

public ActionResult DownloadExcel()
    {
        // 创建Excel工作簿和工作表
        var workbook = new XLWorkbook();
        var worksheet = workbook.Worksheets.Add("Sample Sheet");
        worksheet.Cell("A1").Value = "Hello";
        worksheet.Cell("B1").Value = "World";

        // 保存工作簿到内存流
        var memoryStream = new System.IO.MemoryStream();
        workbook.SaveAs(memoryStream);
        memoryStream.Seek(0, System.IO.SeekOrigin.Begin);

        // 返回Excel文件作为下载
        return File(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Sample.xlsx");
    }

下载zip文件

修改上面下载Excel的内容,将其保存到服务器上的临时位置。

public ActionResult DownloadExcel()
    {
        // 创建Excel工作簿和工作表
        var workbook = new XLWorkbook();
        var worksheet = workbook.Worksheets.Add("Sample Sheet");
        worksheet.Cell("A1").Value = "Hello";
        worksheet.Cell("B1").Value = "World";

        // 保存工作簿到内存流(这一步开始修改修改为保存Excel文件到临时位置)
        //var memoryStream = new System.IO.MemoryStream();
        //workbook.SaveAs(memoryStream);
        //memoryStream.Seek(0, System.IO.SeekOrigin.Begin);

        // 返回Excel文件作为下载 
		// return File(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Sample.xlsx");
		// 保存工作簿到临时文件
		string tempPath = Path.Combine(Path.GetTempPath(), "sample.xlsx");
		workbook.SaveAs(tempPath);
		return File(System.IO.File.ReadAllBytes(tempPath), "application/zip", "export.zip");
    }

请根据你的具体需求调整代码示例中的路径、文件名等细节。此外,请确保在适当的时候清理临时文件,以避免占用不必要的磁盘空间。


网站公告

今日签到

点亮在社区的每一天
去签到