美文网首页
POI 操作Excel

POI 操作Excel

作者: 暗夜行者 | 来源:发表于2019-04-25 16:54 被阅读0次

完整的教程可参考:https://www.tutorialspoint.com/apache_poi/index.htm

实例:https://www.callicoder.com/java-write-excel-file-apache-poi/

1.加载文件方式:

import org.springframework.core.io.DefaultResourceLoader;

private DefaultResourceLoader loader;

  XSSFWorkbook workbook=

   new XSSFWorkbook(

   new FileInputStream(

   new File(

loader.getResource("/WEB-INF/classes/templates/filename.xlsx")

.getFile().getPath())));

XSSFSheet dataSheet=workbook.getSheetAt(0);

2.文件输出方式:

(HttpServletResponse response.....){

 response.setContentType("application/vnd.ms-excel");

//response.setContentType("application/x-msdownload;"); //CSV 形式

 response.setHeader("Content-Disposition","attachment; filename=${生成的名字带后缀}");

 。。。

workbook.write(response.getOutputStream()); 

//输出到某个地方,Linux 路径

//FileOutputStream out = new FileOutputStream("/Users/rliu172/Documents/ImpactFolder/dataTest.xlsx"); 

//workbook.write(out);

}

3.Drop down如何实现

1).https://www.programcreek.com/java-api-examples/index.php?api=org.apache.poi.xssf.usermodel.XSSFDataValidation

DataValidationHelper   (createExplicitListConstraint/ createFormulaListConstraint)

DataValidationConstraint    

CellRangeAddressList

DataValidation

2).依赖的dropdown 

https://stackoverflow.com/questions/53587987/how-to-create-a-dependent-drop-down-list-using-apache-poi#

实现方式为:首先将数据展开输出到一个新的excel 中,然后将数据放入到数据引用中(createFormulaListConstraint)

import org.apache.poi.ss.usermodel.Name;

Name namedRange =workbook.createName();

namedRange.setNameName("标识namerange的名称");

reference = 引用到sheet中找到数据范围区域,见例子

namedRange.setRefersToFormula(reference);

然后在子列表中,通过INDIRECT(父单元格位置)来进行引用

Excel小计:

VLOOKUP:https://support.office.com/en-us/article/vlookup-function-0bbc8083-26fe-4963-8ab8-93a18ad188a1  根据区域查找数据对应的值

INDIRECT: https://support.office.com/en-ie/article/indirect-function-474b3a3a-8a26-4f44-b491-92b6306fa261  引用到数据对应的区域

3.加入merge 区域

sheet.addMergedRegion(row,row,col,col);

自动调整单元格大小: autoSizeColumn

4.excel 在创建nameRange 的时候,本身可能已经存在了重复的nameRange 就会报错,可以先检查下excel中的names:

打开excel

1.On the Ribbon, click the Formulas tab

2. Click Name Manager

5.配置化处理Excel文件,仓库:https://github.com/ozlerhakan/poiji

6.文件的上传

uploadImpact(MultipartHttpServletRequest request, HttpServletResponse response){

MultipartFile file=request.getFile("file");

Long projectId= Long.valueOf(request.getParameter("projectId"));

.......

Workbook workbook=new XSSFWorkbook(file.getInputStream());

}

相关文章

网友评论

      本文标题:POI 操作Excel

      本文链接:https://www.haomeiwen.com/subject/oluzgqtx.html