java导出Excel通过url从服务器下载文件

这篇博客介绍了如何在Java中通过URL来导出Excel文件,主要涉及RecordExcel.java表格模板,ExportExcel.java工具类,以及使用@ExcelField进行实体类字段映射的方法,同时利用Reflections.java进行反射操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.FileOutputStream;

public String exportRecord(Record record) throws Exception {
      List<Record> list = selList(record);
      if (list.size() == 0 && StringUtils.isNotEmpty(record.getPersonName())) {
         record.setPersonCode(record.getPersonName());
         record.setPersonName("");
         list = selList(record);
      }
      if (list != null) {
         if (list.size() > 0) {
            ExportExcel exportExcel = new ExportExcel(null, "记录信息", RecordExcel.class);
            exportExcel.setDataList(list);
            FileOutputStream fo = null;
            String excelFileName = "record-" + System.currentTimeMillis(); + "-" + (new Date().getTime()) + ".xlsx";
            String excelFilePath = "/file_server/excel" + "/" + excelFileName;
            try {
               File file = new File("/file_server/excel");
               if (!file.exists()) {
                  file.mkdirs();
               }
               fo = new FileOutputStream("D:/data" + excelFilePath);
               exportExcel.write(fo);
               return "http://127.0.0.1:8080" + excelFilePath;
            } catch (IOException e) {
               e.printStackTrace();
            } finally {
               IOUtils.closeQuietly(fo);
            }
         } 
      }
      return null;
   }

需要导出的表格模板 RecordExcel.java

/**
 * 记录表格模板
 */
public class RecordExcel {

   @ExcelField(title = "姓名")
   private String personName;
   @ExcelField(title = "编号")
   private String personCode;
   @ExcelField(title = "部门")
   private String deptName;
   @ExcelField(title = "时间")
   private String snapTime;
   
   public void setPersonName(String personName) {
      this.personName = personName;
   }
   public void setPersonCode(String personCode) {
      this.personCode = personCode;
   }
   public void setDeptName(String deptName) {
      this.deptName = deptName;
   }
   public void setSnapTime(String snapTime) {
      this.snapTime = snapTime;
   }
   public String getPersonName() {
      return personName;
   }
   public String getPersonCode() {
      return personCode;
   }
   public String getDeptName() {
      return deptName;
   }
   public String getSnapTime() {
      return snapTime;
   }
}

 

以下属于工具类(可直接复制):

ExportExcel.java

import com.google.common.collect.Lists;
import com.core.common.utils.Reflections;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.common.usermodel.HyperlinkType;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Comment;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Hyperlink;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 导出Excel文件(导出“XLSX”格式,支持大数据量导出   @see org.apache.poi.ss.SpreadsheetVersion)
 */
public class ExportExcel {

   /**
    * 单页最大的行数
    */
   private static final int MAX_ROW_NUM = 11000;

   /**
    * 工作薄对象
    */
   privat
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值