精华内容
下载资源
问答
  • poi解析excel

    2015-09-29 23:58:26
    poi解析excel
  • poi解析Excel

    2014-02-13 11:52:41
    里面有jxl解析excel,poi解析excel ExcelUtil类中有poi解析excel并封装成对象的代码质量不是怎么样 到功能实现 忘对大家有帮助
  • POI解析Excel

    2016-10-22 21:29:33
    POI解析Excel

    POI解析Excel

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFDateUtil;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
    
    
    * 获取Execl的表头
    * @param is
    * @return
    * @throws IOException
    */
    public static List<String> ExcelHead(InputStream is) throws IOException{
    List<String> head = new ArrayList<>();
    
    POIFSFileSystem fs = new POIFSFileSystem(is);
    HSSFWorkbook wb = new HSSFWorkbook(fs);
    
    HSSFSheet sheet = wb.getSheetAt(0);
    HSSFRow row = sheet.getRow(0);
    
    int colNum = row.getPhysicalNumberOfCells();
    
    for (int i = 0; i < colNum; i++) {
    HSSFCell cell = row.getCell(i);
    head.add(cell.getStringCellValue());
    }
    return head;
    }
    
    /**
    * 判断单元格内容的类型
    * @param cell
    * @return
    */
    public String getCellValue(HSSFCell cell){
    String result = null;
    int cellType = cell.getCellType();
    
    if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {
    if (HSSFDateUtil.isCellDateFormatted(cell)) {
    Date date = cell.getDateCellValue();
    SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
    result = formater.format(date);
    } else {
    result = new Double(cell.getNumericCellValue()).toString();
    }
    } else if (cellType == HSSFCell.CELL_TYPE_STRING) {
    if (cell.getStringCellValue().trim().equals("")) {
    result = null;
    } else {
    result = cell.getStringCellValue();
    }
    } else if (cellType == HSSFCell.CELL_TYPE_BOOLEAN) {
    if (cell.getBooleanCellValue()) {
    result = "true";
    } else {
    result = "false";
    }
    } else if (cellType == HSSFCell.CELL_TYPE_ERROR) {
    result = null;
    } else {
    result = null;
    }
    
    return result;
    }
    
    /**
    * 获取内容
    * @param is
    * @return
    * @throws IOException
    */
    public Map<Integer, String> ExcelBody(InputStream is) throws IOException {
            Map<Integer, String> content = new HashMap<>();
            String str = " ";
    
            POIFSFileSystem fs = new POIFSFileSystem(is);
    HSSFWorkbook wb = new HSSFWorkbook(fs);
    
    HSSFSheet sheet = wb.getSheetAt(0);
    HSSFRow row = sheet.getRow(0);
    
            int rowNum = sheet.getLastRowNum();
            int colNum = row.getPhysicalNumberOfCells();
    
            for (int i = 1; i <= rowNum; i++) {
                row = sheet.getRow(i);
                for (int j = 0; j < colNum; j++) {
                str += getCellValue(row.getCell(j));
    }
                content.put(i, str);
                str = " ";
            }
            return content;
        }
    展开全文
  • POI解析excel

    2018-02-28 15:48:54
    可以解析excel 2017 ,2013,可以把解析的结果弄成list集合
  • poi解析EXCEL.zip

    2020-07-10 18:20:57
    poi解析EXCEL poi-3.13.jar,poi-ooxml-3.13.jar,poi-ooxml-schemas-3.13.jar,xmlbeans-2.3.0.jar
  • POI 解析Excel

    2020-01-02 14:40:50
    The supplied data appears to be in the Office 2007+ XML...You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF...
    The supplied data appears to be in the Office 2007+ XML. 
    You are calling the part of POI that deals with OLE2 Office Documents. 
    You need to call a different part of POI to process this data (eg XSSF instead of HSSF).
    
    // 1.  2007及以上版本使用
    Workbook  workbook1 = new XSSFWorkbook(inputStream);     
    // 2 . 2003及以下版本使用 
    Workbook  workbook2 = new HSSFWorkbook(inputStream);     
    // 3.  不区分版本
    Workbook wb = WorkbookFactory.create(inputStream);
    
    方式 3 实现了根据版本去选择相应的解析类:
    	    /**
        	 * Creates the appropriate HSSFWorkbook / XSSFWorkbook from
        	 *  the given InputStream.
        	 * Your input stream MUST either support mark/reset, or
        	 *  be wrapped as a {@link PushbackInputStream}!
        	 */
        	public static Workbook create(InputStream inp) throws IOException, InvalidFormatException {
        		// If clearly doesn't do mark/reset, wrap up
        		if(! inp.markSupported()) {
        			inp = new PushbackInputStream(inp, 8);
        		}
        		
        		if(POIFSFileSystem.hasPOIFSHeader(inp)) {
        			return new HSSFWorkbook(inp);
        		}
        		if(POIXMLDocument.hasOOXMLHeader(inp)) {
        			return new XSSFWorkbook(OPCPackage.open(inp));
        		}
        		throw new IllegalArgumentException("Your InputStream was neither an OLE2 stream, nor an OOXML stream");
        	}
    
    展开全文
  • poi 解析 excel

    2018-02-24 16:27:39
    poi-3.11.jar: http://mvnrepository.com/artifact/org.apache.poi/poi/3.11 poi-ooxml-3.11.jar: http://mvnrepository.com/artifact/org.apache.poi/poi-ooxml/3.11 xmlbeans-2.3.0.jar: ...

    poi-3.11.jar: http://mvnrepository.com/artifact/org.apache.poi/poi/3.11
    poi-ooxml-3.11.jar: http://mvnrepository.com/artifact/org.apache.poi/poi-ooxml/3.11
    xmlbeans-2.3.0.jar: http://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans/2.3.0
    poi-ooxml-schemas-3.11.jar: http://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas/3.11

    import org.apache.poi.*
    
    InputStream is; // 获取流
    Workbook wb;
    String fileType = "xls or xlsx"; 
    if ("xls".equals(fileType)) {
        wb = new HSSFWorkbook(is); // 解析xls
    }
    if ("xlsx".equals(fileType)) {
        wb = new XSSFWorkbook(is); // 解析xlsx
    }
    Sheet sheet = wb.getSheetAt(0); // 获取第一张表
    Row row = sheet.getRow(0); // 获取第一行
    Cell cell = row.getCell(0); // 获取当前行第一个单元格
    
    // 获取纯字符串
    int cellType = cell.getCellType(); // 获取当前单元格内容格式
    String cellValue = "";
    if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {
        // 数字(避免科学计数法:1.2345E4之类的)
        java.text.DecimalFormat df = new DecimalFormat("0");
        cellValue = df.format(cell.getNumericCellValue());
    }
    
    HSSFCell.CELL_TYPE_STRING; // 字符串
    cellValue = cell.getStringCellValue();
    HSSFCell.CELL_TYPE_BOOLEAN; // boolean
    cellValue = cell.getBooleanCellValue();
    HSSFCell.CELL_TYPE_FORMULA; // 公式
    cellValue = cell.getCellFormula() + "";
    HSSFCell.CELL_TYPE_BLANK: // 空值 
    

    excel文件写性能优化: http://blog.csdn.net/bruce128/article/details/79351462

    展开全文
  • POI解析Excel2007

    2016-03-20 20:19:16
    POI解析Excel2007
  • 使用poi解析Excel.pdf

    2021-09-13 17:08:56
    使用poi解析Excel.pdf
  • 通过poi解析Excel示例

    2016-06-23 22:13:18
    通过poi解析Excel示例
  • poi解析excel相关jar

    2017-11-15 22:06:08
    poi解析excel相关的jar,非常好用,包括poi-excelant-3.9-20121203,poi-3.9-20121203
  • POI解析Excel表格

    2020-03-02 15:45:05
    POI解析Excel表格食谱准备食材第一道菜第二道菜下锅炸至两面金黄吃一口嘎嘣脆 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 这里实现poi解析Excel...

    Apache POIApache软件基金会的开放源码函式库,POI提供APIJava程序对Microsoft Office格式档案读和写的功能。

    这里实现poi解析Excel表格的例子,导入Excel

    准备食材

    第一道菜

    在这里插入图片描述

    第二道菜

    在这里插入图片描述

    下锅炸至两面金黄

    package com.ftx.poi;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.text.DecimalFormat;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    import org.apache.poi.hssf.usermodel.HSSFDataFormat;
    import org.apache.poi.hssf.usermodel.HSSFDateUtil;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.Cell;
    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;
    
    public class ParseExcel {
    /**
     * 解析文件的方法
     *@param inputStream文件输入流 ,要解析的Excel文件输入流
     *@param suffix 后缀名,xls或xlsx,代码决定使用什么方式解析Excel
     *@param startRow 从第几行开始读取数据
     *@return List<String[]> 集合中的一个元素对应一行解析的数据
     * 		元素为字符串数组类型,数组中的每一个元素对应一列数据
     * @throws IOException 
     */
    	
    	public List<String[]> parseExcel(InputStream inputStream,String suffix,int startRow) throws IOException{
    		//定义Excel对象变量
    		Workbook workbook=null;
    		//判断后缀 决定使用的解析方式,决定如何创建具体的对象
    		if("xls".equals(suffix)) {
    			//2003版的解析方式
    			workbook=new HSSFWorkbook(inputStream);
    		}else if("xlsx".equals(suffix)) {
    			//2007
    			workbook=new XSSFWorkbook(inputStream);
    		}else {
    			//未知内容
    			return null;
    		}
    		//获取工作表,Excel分为若干个表,sheet
    		Sheet sheet = workbook.getSheetAt(0);//得到第一个表格sheet
    		if(sheet==null) {
    			return null;
    		}
    		//获取表格中最后一行的行号
    		int lastRowNum = sheet.getLastRowNum();
    		//最后一行的行号大于startRow
    		if(lastRowNum<=startRow) {
    			return null;
    		}
    		List<String[]> result=new ArrayList<String[]>();
    		
    		//定义行变量和单元格变量
    		Row row=null;
    		Cell cell=null;
    		//循环读取
    		for (int rowNum = startRow; rowNum <= lastRowNum; rowNum++) {
    			row=sheet.getRow(rowNum);
    			//获取当前行的第一列和最后一列的标记
    			short firstCellNum = row.getFirstCellNum();
    			short lastCellNum = row.getLastCellNum();
    			if(lastCellNum!=0) {
    				String[] rowArray=new String[lastCellNum];
    				for(int cellNum=firstCellNum;cellNum<lastCellNum;cellNum++) {
    					//拿到单元格的值
    					cell=row.getCell(cellNum);
    					//判断单元格是否有数据
    					if(cell==null) {
    						rowArray[cellNum]=null;
    					}else {
    						rowArray[cellNum]=parseCell(cell);
    					}
    				}
    				result.add(rowArray);
    			}
    		}
    		
    		
    		
    		return result;
    	}
    	/**
    	 * 解析单元格数据(返回字符串)
    	 */
    
    private String parseCell(Cell cell) {
    	String cellStr=null;
    	//判断单元格的类型
    	switch (cell.getCellType()) {
    	case STRING :
    		//字符串类型单元格
    		cellStr=cell.getRichStringCellValue().toString();
    		break;
    	case BLANK :
    		//空数据
    		cellStr="";
    		break;
    	case NUMERIC :
    		//数字类型  包含日期、时间、数字
    		//判断日期【年月日2016-12-20  | 时分10:20】类型
    		if(HSSFDateUtil.isCellDateFormatted(cell)) {
    			//判断具体类型,是日期还是时间
    			SimpleDateFormat sdf=null;
    			if(cell.getCellStyle().getDataFormat()==HSSFDataFormat.getBuiltinFormat("h:mm")) {
    				//时间
    				sdf=new SimpleDateFormat("HH:mm");
    			}else {
    				//日期
    				sdf=new SimpleDateFormat("yyyy-MM-dd");
    			}
    			Date temp = cell.getDateCellValue();
    			cellStr=sdf.format(temp);
    		}else {
    			//数字
    			double temp=cell.getNumericCellValue();
    			//数字格式化工具
    			DecimalFormat format=new DecimalFormat();
    			//查看单元格中的具体样式类型
    			String formatStr=cell.getCellStyle().getDataFormatString();
    			if(formatStr.equals("General")) {
    				/**
    				 * 定义格式化正则
    				 * 保留一位小数 #.#
    				 * 保留两位小数#.##
    				 */
    				format.applyPattern("#");
    			}
    			
    			cellStr=format.format(temp);
    		}
    		break;
    	default:
    		cellStr="";
    		
    	}
    	return cellStr;
    }
    	
    }
    
    

    吃一口嘎嘣脆

    public class Test {
    
    	public static void main(String[] args) throws IOException {
    		ParseExcel parser=new ParseExcel();
    		InputStream inputStream=new FileInputStream("D:\\工作内容\\poiTestTwo.xls");
    		String suffix="xls";
    		int startRow=1;
    		List<String[]> result = parser.parseExcel(inputStream, suffix, startRow);
    		for(String[] i:result) {
    			//Arrays.toString("字符串数组")  打印字符串数组,直接打印字符串数组会打印出数组的地址
    			System.out.println(Arrays.toString(i));
    		}
    	}
    
    }
    

    运行测试类,解析出了Excel表格的内容。
    在这里插入图片描述
    说明:上面的poi只能是解析03和07版本的Excel,如果不是这个版本的Excel的话需要另存为03或07版本然后再进行解析,否则会报错找不到对应的jar包。
    在这里插入图片描述
    现在只是把Excel表格的内容解析成了字符串数组的形式,如果导入到数据库的话还需要再对其字符串数组进行处理。

    思路提示:实现在页面点击按钮导入Excel表格进行导入的功能,使用<input type="file" />表单提交,在controller中接收到的就是File对象,就不用像上面的测试类中写死的样子了。
    根据suffix判断表格文件的版本(获取后缀参考图片上传)

     public String upload(@RequestParam(value = "pic") MultipartFile pic,@RequestParam Map param,Model model) throws ParseException {
        String fileName=pic.getOriginalFilename();//得到文件名
        String suffixName=fileName.substring(fileName.lastIndexOf("."));//得到后缀名
    
    展开全文
  • 在日常工作中,我们常常会进行Excel文件读写操作,这篇文章主要介绍了java读写excel文件实现POI解析Excel的方法,实例分析了java读写excel的技巧,非常具有实用价值,需要的朋友可以参考下
  • poi解析excel2003、2007

    2011-09-01 23:43:28
    poi解析excel2003、2007 poi解析excel2003、2007 poi解析excel2003、2007
  • POI解析Excel简单实例

    2013-09-24 21:08:21
    POI解析Excel简单实例
  • poi解析excel所需所有jar包
  • POI 解析 excel

    2011-07-28 10:36:29
    java操作Excel最常用的开源组件有poi与jxl。jxl是韩国人开发的,发行较早,但是更新的很慢,目前似乎还不支持excel...但是由于excel2007底层的实现似乎变成xml与excel2003底层存储发生了本质的变化,因此poi解析exce...
  • java技术,利用工具类poi解析Excel文档示例
  • poi解析excel用到的jar包 java解析excel用到的jar包 压缩包中包含: poi-3.7.jar poi-ooxml-3.7.jar poi-ooxml-schemas-3.7.jar
  • 主要介绍了java 中 poi解析Excel文件版本问题解决办法的相关资料,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,438
精华内容 4,975
关键字:

poi解析excel