当前位置:首页 > 科技

【poi怎么设置excel】Java使用poi导入导出Excel

前言

1、将用户信息导出到excel表(导出数据……。)。

2、将Excel表中的信息输入网站数据库(上传练习)。……。)。

设计为excel的开发过程,例如Excel导出、Excel导入数据库!

Excel操作现在流行的是Apache POI和阿里巴巴的Excel!

我们来谈谈阿帕奇下面的布伊。

Dependencies

!-xls (03) -

Dependency

GroupIdorg.a/groupId

工件idpoi/工件id

版本3.9/版本

/dependency

!-xlsx (07) -

Dependency

GroupIdorg.a/groupId

工件dpoi-oo XML/工件id

版本3.9/版本

/dependency

!-日期格式工具-

Dependency

GroupIdjoda-time/groupId

工件joda-时间/工件id

版本2.10.1/版本

/dependency

!-测试-

Dependency

GroupIdjunit/groupId

工件/工件id

版本4.12/版本

/dependency

请参见/dependencies:

1、jar包必须保持相同的版本(版本)

2、2003和2007版本存在兼容性问题!03版本最多只有65536行!版本07没有限制

2、导入Excel

public void import excel(@ request param(' file ')多文件多元素文件){

//将MultipartFile转换为File

Filefile=mul(多个文件);

//需要解析的Excel文件

Try {

//导入工作簿

/* *

*构造函数导入FileInputStream对象

* FileU调用FileInputStream构造函数打开文件(open0是打开要读取的指定文件的本地方法)

*为FileInputStream的open调用open0方法-

*/

Fileinputstream fs=fileu(文件);

xssfworkbook workbook=new xssfworkbook(fs);

//从最大Excel中获取工作表数

int number of sheets=workbook . getnumberofsheets();

for(int j=0;JnumberOfSheetsJ ){

//导入第一个工作表

xssfsheeths=workbook . get sheet at(j);

获取//Sheet的第一个和最后一个行号

int last=();

int first=()1;

//遍历以获取有关单元格网格的信息。

listauditcontentimportbolist=new ArrayList();

//注:row是行,cell是列

for(int I=first;I=lastI) {

XSSFRow row = (i); String cell1=new String(); //可以在这里遍历row,获取当前行每列的数据 if (!S(cell1)) { try { cell1=row.getCell(1).getStringCellValue(); }catch (Exception e){ cell1=S(1).getNumericCellValue()); } } } String name = (); equi(name, list); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //清空文件缓存,并且调用delete0关闭文件 Mul(file); }

3、MultipartFile2FileUtil工具类

public class MultipartFile2FileUtil { /** * MultipartFile转换为File * @param multipartFile * @return * MultipartFile继承了InputStreamSource */ public static File MultipartFile2File(MultipartFile multipartFile){ //文件上传前的名称 String fileName = mul(); //new 一个 file File file = new File(fileName); OutputStream out = null; try{ //获取文件流,以文件流的方式输出到新文件 // InputStream in = mul(); //获取到一个file的输出流 out = new FileOutputStream(file); //获取multipartFile的字节文件,并将字节文件遍历write到out输出流 byte[] ss = mul(); for(int i = 0; i < ; i++){ out.write(ss[i]); } }catch(IOException e){ e.printStackTrace(); }finally { //进行判断关闭输出流 if (out != null){ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } return file; } public static void deleteFile(File file){ File f = new File()); f.delete(); } }

4、导出Excel

public ApiResult exportAuditContent(HttpServletResponse response, @RequestBody ExportAuditContentIds exportAuditContentIds){ OutputStream outputStream = tryCatch2gGetOutput(response); List<Entity> entitys=dao.getEntitys(); HSSFWorkbook workbook = new HSSFWorkbook(); //headers String[] headers=new String[]{"表头1","表头2","表头3"}; int sheetNum=0; //遍历查到的list for (Entity entity : entitys) { List<List<String>> result=new ArrayList<>(); //sheetName String sheetTitle=en(); for (entity exportAuditContent : audi()) { List<String> str=new ArrayList<>(); ()); ()); ()); re(str); } ExcelForMoreS(workbook,sheetNum,sheetTitle,headers,result,outputStream); sheetNum++; } try { workbook.write(outputStream); ou(); } catch (Exception e) { throw new AnyException("导出出错"); } return success("导出成功","成功"); }

5、tryCatch2gGetOutput

private OutputStream tryCatch2gGetOutput(HttpServletResponse response){ try { OutputStream output = re(); re(); String filename = "title"+new SimpleDateFormat("yyyy-MM-dd").format(new Date()) +".xls"; re("application;); re("Content-Disposition", "attachment;filename=" .concat(S(filename, "UTF-8")))); re("Access-Control-Allow-Origin", "*"); re("Cache-Control", "no-cache"); return output; } catch (Exception e) { throw new AnyException("导出出错"); } }

6、Excel导出工具类

package com.troo; import org.a; import org.a; import org.a; import org.a; import org.a; import org.a; import org.joda.; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class ExcelForMoreSheet { /** * @Title: exportExcel * @Description: 导出Excel的方法 * @author: evan @ 2014-01-09 * @param workbook * @param sheetNum (sheet的位置,0表示第一个表格中的第一个sheet) * @param sheetTitle (sheet的名称) * @param headers (表格的标题) * @param result (表格的数据) * @param out (输出流) * @throws Exception */ public static void exportExcel(HSSFWorkbook workbook, int sheetNum, String sheetTitle, String[] headers, List<List<String>> result, OutputStream out) { // 生成一个表格 HSSFSheet sheet = workbook.createSheet(); workbook.setSheetName(sheetNum, sheetTitle); // 设置表格默认列宽度为20个字节 ((short) 20); // 生成一个样式 HSSFCellStyle style = workbook.createCellStyle(); // 设置这些样式 ); ); ); ); ); ); ); // 生成一个字体 HSSFFont font = workbook.createFont(); ); ((short) 12); ); // 把字体应用到当前的样式 (font); // 指定当单元格内容显示不下时自动换行 (true); // 产生表格标题行 HSSFRow row = (0); for (int i = 0; i < ; i++) { HSSFCell cell = row.createCell((short) i); cell.setCellStyle(style); HSSFRichTextString text = new HSSFRichTextString(headers[i]); cell.setCellValue()); } // 遍历集合数据,产生数据行 if (result != null) { int index = 1; for (List<String> m : result) { row = (index); int cellIndex = 0; for (String str : m) { HSSFCell cell = row.createCell((short) cellIndex); if (str==null){ str=""; } cell.setCellValue()); cellIndex++; } index++; } } } }

7、Entity类

public class Entity{ private String sheetName; private List<SubEntity> subEntitys; } public class ExportAuditContent { private String param1; private String param2; private String param3; }

8、03版测试

String PATH = "D:\\idea.webProject\\26"; @Test public void testWrite03() throws Exception { // 1、创建一个工作簿 Workbook workbook = new HSSFWorkbook(); // 2、创建一个工作表 Sheet sheet = workbook.createSheet("统计表"); // 3、创建一个行 (1,1) Row row1 = (0); // 4、创建一个单元格 Cell cell11 = row1.createCell(0); cell11.setCellValue("今日新增"); // (1,2) Cell cell12 = row1.createCell(1); cell12.setCellValue(666); // 第二行 (2,1) Row row2 = (1); Cell cell21 = row2.createCell(0); cell21.setCellValue("统计时间"); // (2,2) Cell cell22 = row2.createCell(1); String time = new DateTime().toString("yyyy-MM-dd HH:mm:ss"); cell22.setCellValue(time); // 生成一张表(IO 流) 03 版本就是使用 xls结尾! FileOutputStream fileOutputStream = new FileOutputStream(PATH + "z;); // 输出 workbook.write(fileOutputStream); // 关闭流 fileOu(); Sy("zh03 生成完毕!"); }

9、07版测试

@org.junit.Test public void testWrite07() throws IOException { //1、创建一个工作簿 Workbook workbook = new XSSFWorkbook(); //2、创建一个工作表 Sheet sheet = workbook.createSheet("统计表"); //3、创建一个行(1,1) Row row1=(0); //4、创建一个单元格 Cell cell11 = row1.createCell(0); cell11.setCellValue("今日新增"); Cell cell12 = row1.createCell(1); cell12.setCellValue("今日无增"); //创建一个行(2,1) Row row2 = (1); //创建一个单元格 Cell cell21 = row2.createCell(0); cell21.setCellValue("统计时间"); Cell cell22 = row2.createCell(1); String time = new DateTime().toString("yyyy-mm-dd HH:mm:ss"); cell22.setCellValue(time); //生成一张表 io流 注意这里是07版本 FileOutputStream fileOutputStream = new FileOutputStream(path+"java07.xlsx"); workbook.write(fileOutputStream); //关闭流 fileOu(); Sy("07版本文件生成完毕"); }

测试成功!

10、总结:

在ApachePoi 官方提供了对操作大数据量的导入导出的工具和解决办法,操作Excel2007使用XSSF对象,可以分为三种模式:

  • 用户模式:用户模式有许多封装好的方法操作简单,但创建太多的对象,非常耗内存(之前使用的方法)
  • 事件模式:基于SAX方式解析XML,SAX全称Simple API for XML,它是一个接口,也是一个软件包。它是一种XML解析的替代方法,不同于DOM解析XML文档时把所有内容一次性加载到内存中的方式,它逐行扫描文档,一边扫描,一边解析。
  • SXSSF对象:是用来生成海量excel数据文件,主要原理是借助临时存储空间生成excel

1.《【poi怎么设置excel】Java使用poi导入导出Excel》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《【poi怎么设置excel】Java使用poi导入导出Excel》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/2492370.html

上一篇

【EXcel怎么链接CAD】有三种方法可以将Excel表格导入到CAD中

【poi怎么设置excel】从Java、POI、样板导出Excel文件(xls和xlsx)、设置图纸样式

【poi怎么设置excel】从Java、POI、样板导出Excel文件(xls和xlsx)、设置图纸样式

poi怎么设置excel相关介绍,阿帕奇poi POI是[Poor Obfuscation Implementation]的首字母缩写,意思是[可怜的模糊实现]。Java进程读取和写入Microsoft Office格式文件的能力。 ...