springboot中EasyPoi实现⾃动新增序号的⽅法⽬录
⽅式⼀:
⽅式⼆:
⽅式⼀:
新增⼀个名为序号的列,设置导出格式为:isAddIndex
不要在ExportParams 中设置addIndex 为true 这个没啥⽤
List<ExcelExportEntity> colList = new ArrayList<ExcelExportEntity>();
//⾃动新增⾸列序号
ExcelExportEntity xh = new ExcelExportEntity("序号", "xh");
xh.setFormat("isAddIndex");
colList.add(xh);
⽅式⼆:
第⼀步:重新定义⼀个ExcelExportUtil(easypoi 中的ExcelExportUtil是被final 修饰的)
如下图所⽰: SubExcelExportService是我们继承easypoi 的ExcelExportService 并重写了insertDataToSheet()⽅法。import java.io.OutputStream;
import java.URLEncoder;
import java.util.Collection;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import cn.l.entity.ExportParams;
import cn.us.ExcelType;
import cn.l.entity.params.ExcelExportEntity;
public class ExcelExportUtil {
public static Workbook exportExcel(ExportParams entity, List<ExcelExportEntity> entityList, Collection<?> dataSet) {
Workbook workbook =Type(),dataSet.size());;
new SubExcelExportService().createSheetForMap(workbook, entity, entityList, dataSet);
return workbook;
}
public static Workbook exportExcel(ExportParams entity, Class<?> pojoClass, Collection<?> dataSet) {
Workbook workbook =Type(), dataSet.size());
new SubExcelExportService().createSheet(workbook, entity, pojoClass, dataSet);
return workbook;
}
private static Workbook getWorkbook(ExcelType type, int size) {
if (ExcelType.HSSF.equals(type)) {
return new HSSFWorkbook();
} else if (size < 100000) {
return new XSSFWorkbook();
} else {
return new SXSSFWorkbook();
}
}
public static void exportExcel(HttpServletResponse response, Workbook workbook) throws Exception {
response.setContentType("application/vnd.ms-excel");
String fileName = System.currentTimeMillis() + ".xlsx";
response.setHeader("Content-disposition", "attachment; filename=" + de(fileName, "UTF-8")); response.setCharacterEncoding("UTF-8");
OutputStream output = OutputStream();
workbook.write(output);
workbook.close();
output.close();
}
}
第⼆步:继承ExcelExportService 并重写insertDataToSheet()⽅法
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import cn.l.entity.ExportParams;
import cn.l.entity.params.ExcelExportEntity;
import cn.l.export.ExcelExportService;
import cn.l.export.styler.IExcelExportStyler;
import cn.l.ExcelExportException;
import cn.ums.ExcelExportEnum;
import cn.afterturn.easypoi.util.PoiExcelGraphDataUtil;
public class SubExcelExportService extends ExcelExportService {
private static intMAX_NUM= 60000;
@Override
protected void insertDataToSheet(Workbook workbook, ExportParams entity, List<ExcelExportEntity> entityList, Collection<?> dataSet, Sheet sheet) {
try {
dataHandler = DataHandler();
if (dataHandler != null && NeedHandlerFields() != null) {
needHandlerList = Arrays.NeedHandlerFields());
}
dictHandler = DictHandler();
i18nHandler = I18nHandler();
// 创建表格样式
setExcelExportStyler(
(IExcelExportStyler) Style().getConstructor(Workbook.class).newInstance(workbook));
Drawing patriarch = DrawingPatriarch(sheet);
List<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>();
if (entity.isAddIndex()) {
excelParams.add(indexExcelEntity(entity));
}
excelParams.addAll(entityList);
int index = entity.isCreateHeadRows() ? createHeaderAndTitle(entity, sheet, workbook, excelParams) : 0;
int titleHeight = index;
setCellWith(excelParams, sheet);
setColumnHidden(excelParams, sheet);
short rowHeight = Height() != 0 ? Height() : getRowHeight(excelParams);
setCurrentIndex(1);
Iterator<?> its = dataSet.iterator();
List<Object> tempList = new ArrayList<Object>();
while (its.hasNext()) {
Object t = ();
index += createCells(patriarch, index, t, excelParams, sheet, workbook, rowHeight, 0)[0];
tempList.add(t);
if (index >=MAX_NUM) {
break;
}
}
if (FreezeCol() != 0) {
}
mergeCells(sheet, excelParams, titleHeight);
its = dataSet.iterator();
for (int i = 0, le = tempList.size(); i < le; i++) {
<();
}
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("List data more than max ,data size is {}", dataSet.size());
}
// 发现还有剩余list 继续循环创建Sheet
if (dataSet.size() > 0) {
createSheetForMap(workbook, entity, entityList, dataSet);
} else {
// 创建合计信息
addStatisticsRow(getExcelExportStyler().getStyles(true, null), sheet);
}
} catch (Exception e) {
<(e.getMessage(), e);
throw new ExcelExportException(ExcelExportEnum.EXPORT_ERROR, e.getCause());
}
}
第三步:设置导出⽂件的时候⾃动新增序号
ExportParams params = new ExportParams();
params.setAddIndex(true);
注意事项:ExcelExportUtil需要使⽤我们⾃⼰定义的(不要使⽤easyPoi的),portExcel()中的ExcelExportService ⼀定要使⽤我们⾃⼰定义的SubExcelExportService详细参考上图中的⽰例。
到此这篇关于springboot中EasyPoi实现⾃动新增序号的⽅法的⽂章就介绍到这了,更多相关springboot中EasyPoi⾃动新增序号内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!springboot是啥
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论