⑴ 为什么用XSSFWorkbook写出的数据excel不显示
程序太多,看不过来,下面是我们系统里面的能正常使用的代码,你参考一下,看看能不能帮到你。public static List<String[]> getXSSFResult(Workbook wb, int ignoreRows) {List<String[]> result = new ArrayList<String[]>();XSSFCell cell = null;int rowSize = 0;for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {XSSFSheet st = (XSSFSheet) wb.getSheetAt(sheetIndex);// 第一行为标题,不取for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) {XSSFRow row = st.getRow(rowIndex);if (row == null) {continue;}int tempRowSize = row.getLastCellNum() + 1;if (tempRowSize > rowSize) {rowSize = tempRowSize;}String[] values = new String[rowSize];Arrays.fill(values, "");boolean hasValue = false;for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {String value = "";cell = row.getCell(columnIndex);if (cell != null) {// 注意:一定要设成这个,否则可能会出现乱码// cell.setEncoding(HSSFCell.ENCODING_UTF_16);switch (cell.getCellType()) {case XSSFCell.CELL_TYPE_STRING:value = cell.getStringCellValue();break;case XSSFCell.CELL_TYPE_FORMULA:// 导入时如果为公式生成的数据则无值if (!cell.getStringCellValue().equals("")) {value = cell.getStringCellValue();} else {value = cell.getNumericCellValue() + "";}break;case XSSFCell.CELL_TYPE_NUMERIC:if (DateUtil.isCellDateFormatted(cell)) {Date date = cell.getDateCellValue();if (date != null) {value = new SimpleDateFormat("yyyy/MM/dd").format(date);} else {value = "";}} else {value = new DecimalFormat("0").format(cell.getNumericCellValue());}break;case XSSFCell.CELL_TYPE_BLANK:break;case XSSFCell.CELL_TYPE_ERROR:value = "";break;case XSSFCell.CELL_TYPE_BOOLEAN:value = (cell.getBooleanCellValue() == true ? "Y": "N");break;default:value = "";}}if (columnIndex == 0 && value.trim().equals("")) {break;}values[columnIndex] = rightTrim(value);hasValue = true;}if (hasValue) {result.add(values);}}}return result;}@SuppressWarnings("deprecation")public static List<String[]> getHSSFResult(Workbook wb, int ignoreRows){List<String[]> result = new ArrayList<String[]>();HSSFCell cell = null;int rowSize = 0;for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++){HSSFSheet st = (HSSFSheet) wb.getSheetAt(sheetIndex);// 第一行为标题,不取for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++){HSSFRow row = st.getRow(rowIndex);if (row == null){continue;}int tempRowSize = row.getLastCellNum() + 1;if (tempRowSize > rowSize){rowSize = tempRowSize;}String[] values = new String[rowSize];Arrays.fill(values, "");boolean hasValue = false;for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++){String value = "";cell = row.getCell(columnIndex);if (cell != null){// 注意:一定要设成这个,否则可能会出现乱码// cell.setEncoding(HSSFCell.ENCODING_UTF_16);switch (cell.getCellType()){case HSSFCell.CELL_TYPE_STRING:value = cell.getStringCellValue();break;case HSSFCell.CELL_TYPE_NUMERIC:if (HSSFDateUtil.isCellDateFormatted(cell)){Date date = cell.getDateCellValue();if (date != null){value = new SimpleDateFormat("yyyy-MM-dd").format(date);} else{value = "";}} else{value = new DecimalFormat("0").format(cell.getNumericCellValue());}break;case HSSFCell.CELL_TYPE_FORMULA:// 导入时如果为公式生成的数据则无值if (!cell.getStringCellValue().equals("")){value = cell.getStringCellValue();} else{value = cell.getNumericCellValue() + "";}break;case HSSFCell.CELL_TYPE_BLANK:break;case HSSFCell.CELL_TYPE_ERROR:value = "";break;case HSSFCell.CELL_TYPE_BOOLEAN:value = (cell.getBooleanCellValue() == true ? "Y": "N");break;default:value = "";}}if (columnIndex == 0 && value.trim().equals("")){break;}values[columnIndex] = rightTrim(value);hasValue = true;}if (hasValue){result.add(values);}}}return result;}
⑵ java生成excel设置列宽,汉字问题
貌似只能大概猜测。因为英文的字符不是等宽的,另外也和font-size, font-family有关。 如果是12号字体,一个汉字的宽度应该是12像素,一个字母应该大致是6像素。你还需要将1像素转化为1excel单元格的宽度单位。
⑶ 《JAVA》编程中怎么用SXSSFWorkbook对已存在的excel操作进行写数据操作
XSSFWorkbook wb=new XSSFWorkbook(参数);中的参数是InputStream ,你直接XSSFWorkbook wb=new XSSFWorkbook(fs);就可以了。
⑷ 想请教下,java poi怎么实现读取多个表格的第一列数据,然后写进一张新表里,麻烦了~
一张表多个sheet页的情况:
生成workbook:
XSSFWorkbook workBook = new XSSFWorkbook(new FileInputStream(filePath))
获取workbook的所有sheet页:
for (int i = 0; i < workBook.getNumberOfSheets(); i++) {
XSSFSheet sheet = workBook.getSheetAt(i);
}
读取每个sheet页的第一行:
XSSFRow row = sheet.getRow(0);
如果是是多个excel,则把路径放一个list里面,遍历读每个excel就好了
⑸ java excel一般怎样导入oracel数据库
用到的JAR包如下(可以直接到POI官网上下载下载):poi-3.9-20121203.jarpoi-ooxml-3.9-20121203.jarpoi-ooxml-schemas-3.9-20121203.jarxmlbeans-2.3.0.jar 可能有冲突的JAR包,如果工程lib中存在,需要删除。xbean-2.1.0.jar 具体代码如下:Java代码 package com.yusj; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** * 导入和导出Excel文件类 * 支持2003(xls)和2007(xlsx)版本的Excel文件 * * @author yxm */ public class OperationExcelForPOI { public static void main(String[] args) { // 文件所在路径 String execelFile = "C:/Book2007.xlsx" ; //String execelFile = "C:/Book2003.xls" ; // 导入Excel new OperationExcelForPOI().impExcel(execelFile) ; // 导出Excel String expFilePath = "C:/testBook.xls" ; new OperationExcelForPOI().expExcel(expFilePath); } /** * 导入Excel * @param execelFile */ public void impExcel(String execelFile){ try { // 构造 Workbook 对象,execelFile 是传入文件路径(获得Excel工作区) Workbook book = null; try { // Excel 2007获取方法 book = new XSSFWorkbook(new FileInputStream(execelFile)); } catch (Exception ex) { // Excel 2003获取方法 book = new HSSFWorkbook(new FileInputStream(execelFile)); } // 读取表格的第一个sheet页 Sheet sheet = book.getSheetAt(0); // 定义 row、cell Row row; String cell; // 总共有多少行,从0开始 int totalRows = sheet.getLastRowNum() ; // 循环输出表格中的内容,首先循环取出行,再根据行循环取出列 for (int i = 1; i <= totalRows; i++) { row = sheet.getRow(i); // 处理空行 if(row == null){ continue ; } // 总共有多少列,从0开始 int totalCells = row.getLastCellNum() ; for (int j = row.getFirstCellNum(); j < totalCells; j++) { // 处理空列 if(row.getCell(j) == null){ continue ; } // 通过 row.getCell(j).toString() 获取单元格内容 cell = row.getCell(j).toString(); System.out.print(cell + "\t"); } System.out.println(""); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void expExcel(String expFilePath){ OutputStream os = null ; Workbook book = null; try { // 输出流 os = new FileOutputStream(expFilePath); // 创建工作区(97-2003) book = new HSSFWorkbook(); // 创建第一个sheet页 Sheet sheet= book.createSheet("test"); // 生成第一行 Row row = sheet.createRow(0); // 给第一行的第一列赋值 row.createCell(0).setCellValue("column1"); // 给第一行的第二列赋值 row.createCell(1).setCellValue("column2"); // 写文件 book.write(os); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // 关闭输出流 try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } }
⑹ java中怎么将oracle数据导出到excel
用到的JAR包如下:poi-3.9-20121203.jarpoi-ooxml-3.9-20121203.jarpoi-ooxml-schemas-3.9-20121203.jarxmlbeans-2.3.0.jar 可能有冲突的JAR包,如果工程lib中存在,需要删除。xbean-2.1.0.jar 具体代码如下:Java代码 package com.yusj; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** * 导入和导出Excel文件类 * 支持2003(xls)和2007(xlsx)版本的Excel文件 * * @author yxm */ public class OperationExcelForPOI { public static void main(String[] args) { // 文件所在路径 String execelFile = "C:/Book2007.xlsx" ; //String execelFile = "C:/Book2003.xls" ; // 导入Excel new OperationExcelForPOI().impExcel(execelFile) ; // 导出Excel String expFilePath = "C:/testBook.xls" ; new OperationExcelForPOI().expExcel(expFilePath); } /** * 导入Excel * @param execelFile */ public void impExcel(String execelFile){ try { // 构造 Workbook 对象,execelFile 是传入文件路径(获得Excel工作区) Workbook book = null; try { // Excel 2007获取方法 book = new XSSFWorkbook(new FileInputStream(execelFile)); } catch (Exception ex) { // Excel 2003获取方法 book = new HSSFWorkbook(new FileInputStream(execelFile)); } // 读取表格的第一个sheet页 Sheet sheet = book.getSheetAt(0); // 定义 row、cell Row row; String cell; // 总共有多少行,从0开始 int totalRows = sheet.getLastRowNum() ; // 循环输出表格中的内容,首先循环取出行,再根据行循环取出列 for (int i = 1; i <= totalRows; i++) { row = sheet.getRow(i); // 处理空行 if(row == null){ continue ; } // 总共有多少列,从0开始 int totalCells = row.getLastCellNum() ; for (int j = row.getFirstCellNum(); j < totalCells; j++) { // 处理空列 if(row.getCell(j) == null){ continue ; } // 通过 row.getCell(j).toString() 获取单元格内容 cell = row.getCell(j).toString(); System.out.print(cell + "\t"); } System.out.println(""); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void expExcel(String expFilePath){ OutputStream os = null ; Workbook book = null; try { // 输出流 os = new FileOutputStream(expFilePath); // 创建工作区(97-2003) book = new HSSFWorkbook(); // 创建第一个sheet页 Sheet sheet= book.createSheet("test"); // 生成第一行 Row row = sheet.createRow(0); // 给第一行的第一列赋值 row.createCell(0).setCellValue("column1"); // 给第一行的第二列赋值 row.createCell(1).setCellValue("column2"); // 写文件 book.write(os); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // 关闭输出流 try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } }
⑺ java把HSSF全部替换成XSSF,然后来写excel2007报错
首先:确定jar包是否已经导入
其次看jdk版本是否大于1.6.0_18,若没有,则会在newXSSFWorkbook()时报错
⑻ java将数据导出excel计算其文件大小
热门频道首页博客研修院VIPAPP问答下载社区推荐频道活动招聘专题打开CSDN APPCopyright © 1999-2020, CSDN.NET, All Rights Reserved打开APP大数据导出excel大小限制_java 导出Excel 大数据量,自己经验总结! 原创2020-12-19 01:58:16 weixin_39655377 码龄5年关注分析导出实现代码,XLSX支持:/*** 生成XLSX,2007版本的excel,每个sheet无6.5W的行数限制,但是到了一定数量,可能内存溢出,* 次方法适合在预计10W以下的数据导出时使用,本机测试,14W可以导出。列数量在8列左右**@paramfileOut* 输出流*@paramsheetMap* 要设置的数据信息*@throwsSQLException*/public static voidcreateXSLXByResultSet(OutputStream fileOut, WriteXLSBean… beans)throwsSQLException {try{//重点 WorkbookWorkbook wb = newXSSFWorkbook();for (int i = 0, len = beans.length; i < len; i++) {WriteXLSBean xlsBean=beans[i];Sheet sheet=wb.createSheet(xlsBean.getSheetName());ResultSet rs=xlsBean.getRs();ResultSetMetaData rsmd=rs.getMetaData();TypeHandlerRegistry tr=BeanContext.tr;Map th =xlsBean.getTh();int index = 0;while(rs.next()) {long t1 =System.currentTimeMillis();org.apache.poi.ss.usermodel.Row row=sheet.createRow(index);for (int j = 0, numberOfColumns = rsmd.getColumnCount(); j < numberOfColumns; j++) {String key= rsmd.getColumnLabel(j + 1).toLowerCase();if(th.containsKey(key)) {TypeHandler> type =tr.getTypeHandler(JdbcType.forCode(rsmd.getColumnType(j+ 1)));Object obj=type.getResult(rs, key);row.createCell(j).setCellValue(obj== null ? "": obj.toString());}}System.out.println(index+ " :"+ (System.currentTimeMillis() -t1));index++;}}//重点 Workbookwb.write(fileOut);}catch(IOException e) {e.printStackTrace();throw new ServiceRunTimeException("生产xls文档错误", e);}finally{}}在上面 标注了重点的两处,分别是:1.构建一个Excel对象2.将该对象写入一个OutPutStream而在构建过程中,没有地方写入OutPutSteam ,也就是说必须在内存中构建整个 Excel,才能进行写出操作,在大数据量情况下,这样将导致所有数据加载到内存中,而不能输出,导致最后 内存溢出。根据运行环境不用,可能内存溢出的 情况不同根据情况,如果数据量达到10W以上,建议使用1、多个Excel,每个Excel一个Sheet,因为所有Sheet都是Workbook的组成部分。如果不分多个Excel,即使分Sheet也没用,2、每个Excel中列数适中,比如: 5W行每个Excel档,实现分多次导出和分页查询原理一样3、对多个Excel导出到一个临时目录,并通过程序压缩,然后提供给客户下载2003版通过数据库结果存到List中,然后进行生产:Table 就是List Row 是Map/*** 生产xls,2003版本的excel,每个sheet有6.5W的行数限制**@paramfileOut* 输出流,未关闭*@paramsheetMap* 要导出的数据信息*/public static void createXSLByMap(OutputStream fileOut, Map>>sheetMap) {try{HSSFWorkbook wb= newHSSFWorkbook();Set keys =sheetMap.keySet();for (Iterator iterator =keys.iterator(); iterator.hasNext();) {String SheetKey=iterator.next();Sheet sheet=wb.createSheet(SheetKey);List> sheetRows =sheetMap.get(SheetKey);for (int i = 0, len = sheetRows.size(); i < len; i++) {Map cellMap =sheetRows.get(i);Set cellSet =cellMap.keySet();org.apache.poi.ss.usermodel.Row row=sheet.createRow(i);int j = 0;for (Iterator iterCell =cellSet.iterator(); iterCell.hasNext(); j++) {String cellKey=iterCell.next();Object obj=cellMap.get(cellKey);row.createCell(j).setCellValue(obj== null ? "": obj.toString());}}}wb.write(fileOut);}catch(IOException e) {e.printStackTrace();throw new ServiceRunTimeException("生产xls文档错误", e);}finally{}}新版本 POI+office 2007版本excel可以导出几十万条而不内存溢出,详细见:导出大量数据到 excel 的 xlsx文件static String src="SFGHJKJGHFERTUIO";public static void main(String[] args) throwsThrowable {SXSSFWorkbook wb = new SXSSFWorkbook(100); //这里100是在内存中的数量,如果大于此数量时,会写到硬盘,以避免在内存导致内存溢出Sheet sh =wb.createSheet();for (int rownum = 0; rownum < 1000000; rownum++) {Row row =sh.createRow(rownum);for (int cellnum = 0; cellnum < 10; cellnum++) {Cell cell =row.createCell(cellnum);String address = newCellReference(cell).formatAsString();cell.setCellValue(address+src.substring(rownum%10*10+1, (rownum%10+1)*10));}}File file = new File("F:/aa.xlsx");file.createNewFile();FileOutputStream out = newFileOutputStream(file);wb.write(out);out.close();}内存使用情况:根据以上前辈经验,自己在结果自身需求考虑,整合出一个工具。解决了excle表.xls格式行数65535行的限制。我实现的形式是导出一张表,里面有多页(我是已65000为一页)这里是用反射来使用所有传入进行的实体的属性的值。这里只针对String和基本数据类型。如有自己定义的类型需要自己加上。packagecom.tommy.fundation.util;importjava.lang.reflect.Field;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;public classRelectUtil {public static List reflectEntity(T model,Class> cals) throwsNoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, NoSuchFieldException{List list = new ArrayList();Field[] field= model.getClass().getDeclaredFields(); //获取实体类的所有属性,返回Field数组for(int j=0 ; jString nam = field[j].getName(); //获取属性的名字String name =nam;name= name.substring(0,1).toUpperCase()+name.substring(1);String type= field[j].getGenericType().toString(); //获取属性的类型if(type.equals("class java.lang.String")){ //如果type是类类型,则前面包含"class ",后面跟类名Method m = model.getClass().getMethod("get"+name);String value= (String) m.invoke(model); //调用getter方法获取属性值if(value != null){list.add(value);}else{list.add("");}}if(type.equals("class java.lang.Integer")){Method m= model.getClass().getMethod("get"+name);Integer value=(Integer) m.invoke(model);if(value != null){list.add(value);}else{list.add("");}}if(type.equals("class java.lang.Short")){Method m= model.getClass().getMethod("get"+name);Short value=(Short) m.invoke(model);if(value != null){list.add(value);}else{list.add("");}}if(type.equals("class java.lang.Double")){Method m= model.getClass().getMethod("get"+name);Double value=(Double) m.invoke(model);if(value != null){list.add(value);}else{list.add("");}}if(type.equals("class java.lang.Boolean")){Method m= model.getClass().getMethod("get"+name);Boolean value=(Boolean) m.invoke(model);if(value != null){list.add(value);}else{list.add("");}}if(type.equals("class java.util.Date")){Method m= model.getClass().getMethod("get"+name);Date value=(Date) m.invoke(model);if(value != null){list.add(value);}else{list.add("");}}}returnlist;}}下面将是重点实现导出excel表packagecom.tommy.fundation.util;importjava.io.OutputStream;importjava.util.ArrayList;importjava.util.Date;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.Set;importjavax.servlet.http.HttpServletResponse;importorg.apache.poi.hssf.record.formula.functions.T;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;@SuppressWarnings("hiding")public class ExportExcel{/*** 导出多张excel表,解决xls格式行数65535的限制*@authorOnlyOne*@paramresponse*@paramlist 需要处理的list数据集合*@throwsException*/@SuppressWarnings("deprecation")public void doExcel(HttpServletResponse response,List list,String fileName) throwsException {OutputStream os= response.getOutputStream();//获取输出流response.reset();//设置下载头部信息。Content-disposition为属性名。attachment表示以附件方式下载,如果要在页面中打开,则改为inline。filename为文件名response.setHeader("Content-disposition", "attachment; filename=excell.xls");response.setContentType("application/msexcel");Map> sheetMap =daData(list);HSSFWorkbook wb= newHSSFWorkbook();Set keys =sheetMap.keySet();for (Iterator iterator =keys.iterator(); iterator.hasNext();) {Integer SheetKey=iterator.next();HSSFSheet sheet= wb.createSheet((fileName+SheetKey).toString());List sheetRows =sheetMap.get(SheetKey);for (int i = 0, len = sheetRows.size(); i < len; i++) {T en=(T) sheetRows.get(i);List dataList = RelectUtil.reflectEntity(en, en.getClass());HSSFRow row=sheet.createRow(i);row.createCell(0).setCellValue(String.valueOf(i));for(int m=0; mrow.createCell(m+1).setCellValue(dataList.get(m).toString());}}}wb.write(os);}/*** 此方法将数据集合按65000个进行分割成多个子集合*@authorOnlyOne*@paramlist 需要处理的list数据集合*@return*/public Map> daData(Listlist){int count = list.size()/65000;int yu = list.size() % 65000;Map> map = new HashMap>();for (int i = 0; i <= count; i++) {List subList = new ArrayList();if (i ==count) {subList= list.subList(i * 65000, 65000 * i +yu);}else{subList= list.subList(i * 65000, 65000 * (i + 1)-1);}map.put(i, subList);}returnmap;}}在Java中调用的方式@RequestMapping(value = "/doExcel", method =RequestMethod.GET)public void doExcel(HttpServletResponse response,HttpServletRequest request) throwsException {List list =enrolltgService.findAll();new ExportExcel().doExcel(response, list, "黑白淡奶");}大功搞成,以后再也不会为了数据量太大而导不出来烦恼了!!!需要的包 poi-3.2-FINAL-20081019.jar相关资源:poi读取大文件Excel,使用xml格式解析,速度实测50mb文件13s,可指定…打开CSDN,阅读体验更佳POI多线程分表导出百万级大数据量EXCEL导出_Zhuo_chao的博客-CSDN博 …由上面可知 Excel 2003及以下是无法实现单sheet百万级的数据。 ApachePOI 简介 Apache POI 是用Java编写的免费开源的跨平台的 JavaAPI,Apache POI提供API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式档案读和写的功…Java 使用POI导出数据到 excel,单 sheet 和多 sheet__修铁路的的博客…单sheet 和多 sheet,用到的jar都是一样的,无非就是多创建一个 sheet的问题,以下是需要用到的jar包,在对应模块的pom.xml 中引入即可 <dependency> <groupId>org.apache.poi</groupId> …java导出excel超出65533行业务背景: 列表导出,数据导出超过65533行 解决方案: 1、超出65533行,直接系统提示:本系统支持导出的最大条数为65533行 2、导出模版改为.xlsx,POI导出时用XSSFWorkbook,把所有数据都拿到内存里,可以导出超过65533行,但是上线之后,发现会内存溢出 3、导出模版改为.xlsx,POI导出时用SXSSFWorkbook,每次往内存里放一定的数据,导完之后,刷新,再次…继续访问Java的poi导出的excel不能超过256列的解决办法Java的poi导出的excel不能超过256列的解决办法背景1、现在的情况2、解决办法 背景 1、现在的情况 excel文件名以.xls结尾 这个构造函数中默认采取这个类型 this.type = ExcelType.HSSF; public ExportParams(String title, String sheetName) { this.color = HSSFColorPredefined.WHITE.getIndex(); this.headerColor = HSSFC继续访问使用ApachePOI导出excel(多个sheet页)_我是橘子京的博客2、设置导出excel路径 //导出的文件路径 String filePath="D:\\excel.xls"; 1 2 3、创建excel文件 //创建Excel文件(Workbook) HSSFWorkbook workbook = new HSSFWorkbook(); 1 2 4、设置单元格样式 //设置单元格样式 HSSFCel…POI3.8 导出大数据excel(50万左右)_咖啡加糖_的博客_poi支持最…import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellReference; import org.apache.poi.xssf.streaming.SXSSFWorkbook; …最新发布 【JAVA问题解决方案】01.EasyExcel导出数据超过Excel单表上限解决方案1.了解一下Excel单表最多存储多少行数据(可以存储1048576条数据,1024的平方,2的20次方)。本文是介绍EasyExcel导出数据超过Excel单表上限解决方案。2.知道最多多少行就能以这个数为条件,如果超过则进行分表。3.分表的同时需要对数据进行分割,才能不超过最大限度。实体类(非常简单,为了导出表更快)继续访问 java实现流输出形式导出数据(使用EasyExcel)并打包为zip包java实现流输出形式文件下载并打包为zip包 pom.xml文件导入easyexcel <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.0.5</version> </d…继续访问…到excel文件(xls格式),附实验结果(单张sheet最多可有65536行)& Fi…使用POI导出MySQL数据库数据到excel文件(xls格式) 注意事项:单张sheet最多存储65536行!否则报错! Caused by: java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535) !使用Apache POI导出百万条EXCEL数据_橙乐果果的博客工作中,有这么一个需求:每天凌晨00:05分定时从数据库导出大于三个月的订单流水信息,保存为excel文件。 Just do it. 1.引入POM依赖 <!– excel –> <!– https://mvnrepository.com/artifact/org.apache.poi/poi –> … Linux下读写文件操作Linux下读写文件操作 #include<stdio.h> typedef struct Student { int no; char name[10]; int score; }Student; int main(int args,char *argv[]) { //打开文件 FILE *fp=fopen("test.txt","w"); if(fp=NULL) { perror("fopen"); …继续访问Java导出超大Excel文件,防止内存溢出Java导出超大Excel文件,防止内存溢出1.采用Poi中的SXSSFWorkbook2.maven中引入Poi3.测试过程4.单元测试Java代码5.结论 将业务数据导出到Excel表中,导出任务数据量较大时,导出的项目就会内存溢出,本文通过Java操作Poi的SXSSFWorkbook类进行导出,解决内存溢出问题。 1.采用Poi中的SXSSFWorkbook 在实现excel导出时,在数据量过大的情况下,总是容易发生内存溢出的情况。可以使用POI提供的 SXSSFWorkbook 类来避免内存溢继续访问 Apache Poi导出Excel多Sheet页详解!_奥鹏马的博客apache poi是目前比较常用导出excel的方式。最近想要实现一个导出excel多sheet页的功能。 网上查了一下大多都是针对某个具体对象的导出,不能实现任意对象的导出。现在将自己研究出的代码贴出来,供大家参考。 //注意:此处实现的关键是将…Apache poi 导出多sheet的excel表格_朋态圈的博客导出多sheet的excel */public class ApachePoi { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub exportExcel();} @SuppressWarnings("resource") public static String exportExcel…java导出excel限制大小_解决java poi导出excel2003不能超过65536行的问题/*** 如果达到50000条数据则重新创建工作表的逻辑*/@Overridepublic void exportExcel(ListformList, ServletOutputStream outputStream){try{//工作表名后面的数字,如表1,表2int i = 0;//记录总行数int rownum = 0;//记录每个sheet的行数int tempnum = 0;//分页条…继续访问热门推荐 java poi 导出Excel 超大数据量解决方案http://blog.csdn.net/qiaoshuai0920/article/details/51800991继续访问poi导出excel,实现一个excel中多个sheet(可解决poi导出限制65536的问题…本文章的excel实现导出多个sheet是在上一篇poi导出的基础上实现的,这么久了,对于上一篇文章的poi也作出过一些优化。 这里我只贴修改了的方法的代码,其余的和上一篇文章的一样。 /** * 导出excel.在一个页面中单独导出Excel …基于Apache POI导出(百万级)大数据量Excel的实现_一朵风中摇曳的水仙…支持单个 excel 的 sheet 导出100w 的数据 ApachePOI操作Excel对象 1.HSSF:操作Excel 2007之前版本(.xls)格式,生成的EXCEL不经过压缩直接导出 2.XSSF:操作Excel 2007及之后版本(.xlsx)格式,内存占用高于HSSF …解决POI的XSSFWorkbook导入大excel的内存消耗过大问题方式1:使用SXSSFWorkbook ,经过测试,这个情况无效,因为本质上SXSSFWorkbook 也是通过XSSFWorkbook来的,他可以解决写出excel的场景,但是解决不了我们这种用户上传且读取excel中的内容的场景 XSSFWorkbook XSSFWorkbook = new XSSFWorkbook(fileInputStream); System.gc(); SXSSFWorkbook SXSSFWorkbook = new SXSS继续访问导入导出原文地址:https://blog.csdn.net/qq_29631809/article/details/72785338 创建流程:(上级为 下级的载体) 1:.创建 工作簿 2.创建 sheet(可以创建多个) 3.创建行 4.创建单元格 接下来 分别说下 工作簿的常用三种形式的区别,他们分别是 1.HSSFWorkbook 2.XSSFWorkbook 3.SXSSFWork…继续访问NPOI导出Excel 65536限制1 #region NPOI 导出excel数据超65535自动分表 2 /// <summary> 3 /// DataTable转换成Excel文档流,并输出到客户端 4 /// </summary> 5 /// <param name="table">…继续访问java导出csv文件 为解决导出excel时每个单元格的限制(32767)此实现方法仅供参考 因为本人导出数据量不大所采取的方法 如数据量大,会到至内存溢出请知晓 在这还提下:导出时内容自己换行 只需在内容前尾各加双引号就行。 如图 1、准备导出工具类 // An highlighted block package com.test; import java.io.BufferedWriter; import java.io.File; import java.io…继续访问Excel单元格数据超过32767报错问题处理java poi 32767继续访问SXSSFWorkbook Excel 大量数据导出注意 SXSSFWorkbook 用于大量数据的导出 SXSSFWorkbook是用来生成海量excel数据文件,主要原理是借助临时存储空间生成excel, SXSSFWorkbook专门处理大数据,对于大型excel的创建且不会内存溢出的,就只SXSSFWorkbook了。 它的原理很简单,用硬盘空间换内存(就像hashmap用空间换时间一样)。 SXSSFWorkbook是streami…继续访问EXCEL大数据量导出的解决方案将web页面上显示的报表导出到excel文件里是一种很常见的需求。然而,当数据量较大的情况下,excel本身的支持最多65535行数据的问题便凸显出来。下面就给出大数据量导出到excel的解决方 案。 首先,对于数据超过了65535行的问题,很自然的就会想到将整个数据分块,利用excel的多sheet页的功能,将超出65535行后的数据写入到下一个sheet页中,即通过多sheet页的方式,突破了…继续访问几行代码,复杂Excel 导入导出,真心强大!点击上方蓝色字体,选择“标星公众号”优质文章,第一时间送达项目中使用:功能介绍IMPORT1、 ExcelHandle核心处理器;2、 ExcelWorkbookManageexcel所有工作表管理;3、 ExcelInitConfig配置文件初始化;4、 AbstractFileParser文件转换类;alanpoi import有何优势?1、 用户不需要额外引入poi…继续访问 java中poi导出excel问题总结java中poi导出excel问题总结继续访问java POI导出excel,列数限制在256列有两篇文章写得比较好的 https://www.oschina.net/code/snippet_1052786_47435 https://www.jianshu.com/p/4c6eec65fdc3继续访问apache poi导出excel最大多少个sheet大数据导出excel大小限制写评论评论收藏点赞踩分享
⑼ java poi Excel2007里的SXSSFWorkbook怎样读取文件 SXSSFWorkbook只能写吗,那怎样获得要写的内容
Notes是一个具有Id , RuleID , MainId 属性的javaBean.public static List<Notes> readFromXLS2007(String filePath) { File excelFile = null;// Excel文件对象 InputStream is = null;// 输入流对象 String cellStr = null;// 单元格,最终按字符串处理 List<Notes> NotesList = new ArrayList<Notes>();// 返回封装数据的List Notes Notes = null;// 每一个Notes对象 try { excelFile = new File(filePath); is = new FileInputStream(excelFile);// 获取文件输入流 XSSFWorkbook workbook2007 = new XSSFWorkbook(is);// 创建Excel2007文件对象 XSSFSheet sheet = workbook2007.getSheetAt(0);// 取出第一个工作表,索引是0 // 开始循环遍历行,表头不处理,从1开始 for (int i = 1; i <= sheet.getLastRowNum(); i++) { Notes = new Notes();// 实例化Notes对象 XSSFRow row = sheet.getRow(i);// 获取行对象 if (row == null) {// 如果为空,不处理 continue; } // 循环遍历单元格 for (int j = 0; j < row.getLastCellNum(); j++) { XSSFCell cell = row.getCell(j);// 获取单元格对象 if (cell == null) {// 单元格为空设置cellStr为空串 cellStr = ""; } else if (cell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) {// 对布尔值的处理 cellStr = String.valueOf(cell.getBooleanCellValue()); } else if (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {// 对数字值的处理 cellStr = cell.getNumericCellValue() + ""; } else {// 其余按照字符串处理 cellStr = cell.getStringCellValue(); } // 下面按照数据出现位置封装到bean中 if (j == 0) { Notes.setId(new Double(cellStr).intValue()); } else if (j == 1) { Notes.setRuleId(new Double(cellStr).intValue()); } else if (j == 2) { Notes.setMainId(new Double(cellStr).intValue()); } } NotesList.add(Notes);// 数据装入List } } catch (IOException e) { e.printStackTrace(); } finally {// 关闭文件流 if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } return NotesList; }}