最简单的EXCEL模板文件下载

之前所用的下载文件方法总是出现下载文件未知大小的问题,百思不得其解,最后使用该方法后,问题解决。

  // 根目录为resources
  private static final String filePath = "/excel/xxx.xlsx";
   /**
     * 下载EXCEL模板文件
     * 
     * @param response
     */
    @ApiOperation(value = "下载EXCEL模板文件", notes = "下载EXCEL模板文件", httpMethod = "GET", produces = "application/vnd.ms-excel", protocols = "HTTP/1.1")
    @RequestMapping(value = "/download-excel-model", method = RequestMethod.GET)
    public void downloadImportTemplate(HttpServletResponse response) {
        try {

            ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
            // 获取所有匹配的文件
            org.springframework.core.io.Resource[] resources = resolver.getResources(filePath);
            InputStream stream = resources[0].getInputStream();
            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-Disposition", "attachment;filename=xxx.xlsx");
            IOUtils.copy(stream, response.getOutputStream());
            response.flushBuffer();

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

==============================================================================================================

import org.apache.commons.io.IOUtils;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;

public class DownloadExcelModel {

// 下载文件路径
private String filePath;

// 生成文件名称
private String fileName;

public DownloadExcelModel() {

}

public DownloadExcelModel(String filePath, String fileName) {
this.filePath = filePath;
this.fileName = fileName;
}

/**
* <p>
* 通用Excel导出方法,利用反射机制遍历对象的所有字段,将数据写入Excel文件中 <br>
* 此版本生成2007以上版本的文件 (文件后缀:xlsx)
* </p>
*/
public void downloadExcelModel(HttpServletResponse response) throws Exception {

ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
// 获取所有匹配的文件
org.springframework.core.io.Resource[] resources = resolver.getResources(filePath);
InputStream inputStream = resources[0].getInputStream();

// response缓冲区重置
response.reset();
// 支持下载参数
response.setContentType("application/vnd.ms-excel");
// 设置浏览器响应头对应的Content-disposition
response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(), StandardCharsets.ISO_8859_1) + ".xlsx");
// 设置响应编码
response.setCharacterEncoding("UTF-8");

IOUtils.copy(inputStream, response.getOutputStream());
response.flushBuffer();
}

}
 

 

转载于:https://www.cnblogs.com/huahuavip/p/10083059.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Winform中下载Excel模板可以通过以下步骤完成: 1. 首先,在Winform窗体中添加一个按钮或者菜单项,用于触发下载Excel模板的事件。 2. 在按钮或者菜单项的点击事件中,编写代码实现Excel模板的下载。 3. 创建一个保存文件对话框,让用户选择Excel模板保存的路径和文件名。 4. 判断用户是否选择了保存路径和文件名,如果没有选择则取消下载。 5. 创建一个Excel文件对象,并设置文件的格式和内容。可以使用相应的库或者组件,如NPOI、Excel Interop等。 6. 将Excel文件保存到用户指定的路径和文件名位置。 以下是一个简单的示例代码,实现Winform中Excel模板的下载: ```csharp private void btnDownload_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Excel Files|*.xlsx;*.xls"; saveFileDialog.Title = "Save Excel Template"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { string filePath = saveFileDialog.FileName; // 创建Excel文件对象 // 这里使用NPOI库创建Excel模板,需先引入NPOI相关的命名空间 HSSFWorkbook workbook = new HSSFWorkbook(); ISheet sheet = workbook.CreateSheet("Sheet1"); // 设置Excel内容 // 保存Excel文件 using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { workbook.Write(fs); } MessageBox.Show("Excel模板下载成功!"); } else { MessageBox.Show("取消下载!"); } } ``` 以上代码中使用了NPOI库来创建Excel模板,可以根据实际需求选择其他库或者组件。在下载过程中,通过SaveFileDialog选择保存路径和文件名,然后使用FileStream将Excel文件保存在指定位置。最后弹出MessageBox提示下载结果。 希望以上回答对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值