poi导入导出excel文件,兼容.xls和.xlsx两种格式

原创 2015年07月08日 15:49:06

这个是测试类:

package com.fishroad.util;

import java.io.File;
import java.io.FileInputStream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;

import javax.swing.JOptionPane;

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 ImportExcel {

	private final static String XLS = "xls";

	private final static String XLSX = "xlsx";

	public static void main(String[] args) {
		String path = UtilTools.getDirPath();
		String extensionName = UtilTools.getFileExtName(path);
		// System.out.println(extensionName);

		Workbook workbook = null;

		try {

			if (extensionName.toLowerCase().equals(XLS)) {
				workbook = new HSSFWorkbook(new FileInputStream(new File(path)));
			} else if (extensionName.toLowerCase().equals(XLSX)) {
				workbook = new XSSFWorkbook(new FileInputStream(new File(path)));
			}
			Sheet sheet = workbook.getSheetAt(0);

			int minRowIx = sheet.getFirstRowNum();
			int maxRowIx = sheet.getLastRowNum();
			for (int rowIx = minRowIx; rowIx <= maxRowIx; rowIx++) {
				Row row = sheet.getRow(rowIx);
				//Cell cell = row.getCell(0);
				int minCellIx = row.getFirstCellNum();
				int maxCellIx = row.getLastCellNum();
				for(int cellIx = minCellIx;cellIx<=maxCellIx;cellIx++){
					Cell cell = row.getCell(cellIx);
					if (cell != null) {
						String a = getValue(cell);
						if(a==null || "".equals(a)){
							System.out.println("---******----");
						}
						
						System.out.println(a);
					}else{
						System.out.println(cellIx+"---******----");
					}
					
				}
				/*if (cell != null) {
					String a = cell.getStringCellValue();
					System.out.println(a);
				}*/
			}

		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, "导入文件出错!");
		}

	}
	
	
	private static String getValue(Cell hssfCell) {
		
        if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {
            // 返回布尔类型的值
            return String.valueOf(hssfCell.getBooleanCellValue());
        } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {
        	if(HSSFDateUtil.isCellDateFormatted(hssfCell)){
        		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
				return sdf.format(HSSFDateUtil.getJavaDate(hssfCell.getNumericCellValue())).toString();
        	}
            // 返回数值类型的值(记得将数字类型的值转化为BigDecimal,不然的话,取出来会带有小数点,切记!!!!!)
            return String.valueOf(new BigDecimal(hssfCell.getNumericCellValue()) );
        } else {
            // 返回字符串类型的值
            return String.valueOf(hssfCell.getStringCellValue());
        }
    }

}
UtilTools.java是一个工具类,主要用到了下面两个方法:
/**
	 * swing页面形式的选择文件存储位置
	 * 
	 * @return
	 */
	public static String getDirPath() {
		JFileChooser parseDir = new JFileChooser();
		parseDir.setAcceptAllFileFilterUsed(true);
		parseDir.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
		int result = parseDir.showOpenDialog(null);
		if (result == JFileChooser.APPROVE_OPTION) {
			System.out.println(parseDir.getSelectedFile().getAbsolutePath());
			return parseDir.getSelectedFile().getAbsolutePath();
		} else {
			return "";
		}
	}
/**
	 * 获取文件的后缀名
	 * 
	 * @param filePath
	 * @return
	 */
	public static String getFileExtName(String filePath) {

		File f = new File(filePath);
		String fileName = f.getName();
		String prefix = fileName.substring(fileName.lastIndexOf(".") + 1);
		System.out.println(prefix);
		return prefix;

	}



版权声明:本文为博主原创文章,未经博主允许不得转载。

Java之excel导入数据同时兼容.xls和.xlsx

java兼容两种版本的excel导入
  • fz_tym
  • fz_tym
  • 2017年07月27日 18:16
  • 524

poi生成excel表格(xls或者xlsx格式),多个工作sheet

poi生成excel表格(xls或者xlsx格式),多个工作sheet

使用POI导出xls和xlsx格式要注意的问题

导出xlsx格式: response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.shee...

POI 通用导出Excel(.xls,.xlsx)

POI操作EXCEL对象 HSSF:操作Excel 97(.xls)格式 XSSF:操作Excel 2007 OOXML (.xlsx)格式,操作EXCEL内存占用高于HSSF SXSSF...

java读写excel(POI,支持xls和xlsx两种格式)

poi读写excel的良心示例,适合有一点点java基础的人来看
  • Augus6
  • Augus6
  • 2016年05月20日 17:55
  • 12261

java使用POI实现excel文件的读取,兼容后缀名xls和xlsx

首先,引入所需的jar包: 如果是maven管理项目的jar包,只需在pom.xml中加上: POIUtil工具类的代码: package com.cn.util; import java.io.Fi...
  • aqsunkai
  • aqsunkai
  • 2016年08月21日 23:40
  • 21298

请大家帮忙看看poi读取excel表,为什么.xls可以,.xlsx不行?还报错

import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util...

poi 生成excel文件.xls或者.xls实例,包括日期写入处理

import java.io.File; import java.io.FileOutputStream; import java.util.Date; import org.apache.poi....

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Poi实现Excel导出工具类封装

工具类代码PoiExcelExport如下:package com.myssm.util.poi; import java.io.File; import java.io.FileOutputStr...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poi导入导出excel文件,兼容.xls和.xlsx两种格式
举报原因:
原因补充:

(最多只允许输入30个字)