亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java常用工具類之Excel操作類及依賴包下載

2019-11-26 15:28:50
字體:
來源:轉載
供稿:網友

依賴包下載:http://xiazai.VeVB.COm/201407/tools/java-excel-dependency(VeVB.COm).rar

Excel工具類ExcelUtil.java源碼:

package com.itjh.javaUtil;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.text.DecimalFormat;import java.util.LinkedList;import java.util.List;import javax.servlet.http.HttpServletResponse;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRichTextString;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.openxml4j.exceptions.InvalidFormatException;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.DateUtil;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.ss.usermodel.WorkbookFactory;/** * 封裝對excel的操作,包括本地讀寫excel和流中輸出excel,支持office 2007。<br/> * 依賴于poi-3.9-20121203.jar,poi-ooxml-3.9-20121203.jar,poi-ooxml-schemas-3.9- * 20121203.jar,dom4j-1.6.1.jar<br/> * 有參構造函數參數為excel的全路徑<br/> *  * @author 宋立君 * @date 2014年07月03日 */public class ExcelUtil {	// excel文件路徑	private String path = "";	// 寫入excel時,是否自動擴展列寬度來符合內容。	private boolean autoColumnWidth = false;	/**	 * 無參構造函數 默認	 */	public ExcelUtil() {	}	/**	 * 有參構造函數	 * 	 * @param path	 *   excel路徑	 */	public ExcelUtil(String path) {		this.path = path;	}	/**	 * 讀取某個工作簿上的所有單元格的值。	 * 	 * @param sheetOrder	 *   工作簿序號,從0開始。	 * @return List<Object[]> 所有單元格的值。	 * @throws IOException	 *    加載excel文件IO異常。	 * @throws FileNotFoundException	 *    excel文件沒有找到異常。	 * @throws InvalidFormatException	 * @author 宋立君	 * @date 2014年07月03日	 */	public List<Object[]> read(int sheetOrder) throws FileNotFoundException,			IOException, InvalidFormatException {		FileInputStream fis = new FileInputStream(path);		Workbook workbook = WorkbookFactory.create(fis);		if (fis != null) {			fis.close();		}		Sheet sheet = workbook.getSheetAt(sheetOrder);		// 用來記錄excel值		List<Object[]> valueList = new LinkedList<Object[]>();		// 循環遍歷每一行、每一列。		for (Row row : sheet) {			// 每一行			Object[] rowObject = null;			for (Cell cell : row) {				// cell.getCellType是獲得cell里面保存的值的type				switch (cell.getCellType()) {				case Cell.CELL_TYPE_BOOLEAN:					// 得到Boolean對象的方法					rowObject = CollectionUtil.addObjectToArray(rowObject,							cell.getBooleanCellValue());					break;				case Cell.CELL_TYPE_NUMERIC:					// 先看是否是日期格式					if (DateUtil.isCellDateFormatted(cell)) {						// 讀取日期格式						rowObject = CollectionUtil.addObjectToArray(rowObject,								cell.getDateCellValue());					} else {						DecimalFormat df = new DecimalFormat();						// 單元格的值,替換掉,						String value = df.format(cell.getNumericCellValue())								.replace(",", "");						// 讀取數字						rowObject = CollectionUtil.addObjectToArray(rowObject,								value);					}					break;				case Cell.CELL_TYPE_FORMULA:					// 讀取公式					rowObject = CollectionUtil.addObjectToArray(rowObject,							cell.getCellFormula());					break;				case Cell.CELL_TYPE_STRING:					// 讀取String					rowObject = CollectionUtil.addObjectToArray(rowObject, cell							.getRichStringCellValue().toString());					break;				}			}			// 將這行添加到list。			valueList.add(rowObject);		}		return valueList;	}	/**	 * 讀取某個工作簿上的某個單元格的值。	 * 	 * @param sheetOrder	 *   工作簿序號,從0開始。	 * @param colum	 *   列數 從1開始	 * @param row	 *   行數 從1開始	 * @return 單元格的值。	 * @throws Exception	 *    加載excel異常。	 * @author 宋立君	 * @date 2014年07月03日	 */	public String read(int sheetOrder, int colum, int row) throws Exception {		FileInputStream fis = new FileInputStream(path);		Workbook workbook = WorkbookFactory.create(fis);		if (fis != null) {			fis.close();		}		Sheet sheet = workbook.getSheetAt(sheetOrder);		Row rows = sheet.getRow(row - 1);		Cell cell = rows.getCell(colum - 1);		String content = cell.getStringCellValue();		return content;	}	/**	 * 在指定的工作簿、行、列書寫值。	 * 	 * @param sheetOrder	 *   工作簿序號,基于0.	 * @param colum	 *   列 基于1	 * @param row	 *   行 基于1	 * @param content	 *   將要被書寫的內容。	 * @throws Exception	 *    書寫后保存異常。	 * @author 宋立君	 * @date 2014年07月03日	 */	public void write(int sheetOrder, int colum, int row, String content)			throws Exception {		FileInputStream fis = new FileInputStream(path);		Workbook workbook = WorkbookFactory.create(fis);		if (fis != null) {			fis.close();		}		Sheet sheet = workbook.getSheetAt(sheetOrder);		Row rows = sheet.createRow(row - 1);		Cell cell = rows.createCell(colum - 1);		cell.setCellValue(content);		FileOutputStream fileOut = new FileOutputStream(path);		workbook.write(fileOut);		fileOut.close();	}	/**	 * 得到一個工作區最后一條記錄的序號,相當于這個工作簿共多少行數據。	 * 	 * @param sheetOrder	 *   工作區序號	 * @return int 序號。	 * @throws IOException	 *    根據excel路徑加載excel異常。	 * @throws InvalidFormatException	 * @author 宋立君	 * @date 2014年07月03日	 */	public int getSheetLastRowNum(int sheetOrder) throws IOException,			InvalidFormatException {		FileInputStream fis = new FileInputStream(path);		Workbook workbook = WorkbookFactory.create(fis);		if (fis != null) {			fis.close();		}		Sheet sheet = workbook.getSheetAt(sheetOrder);		return sheet.getLastRowNum();	}	/**	 * 在磁盤生成一個含有內容的excel,路徑為path屬性	 * 	 * @param sheetName	 *   導出的sheet名稱	 * @param fieldName	 *   列名數組	 * @param data	 *   數據組	 * @throws IOException	 * @author 宋立君	 * @date 2014年07月03日	 */	public void makeExcel(String sheetName, String[] fieldName,			List<Object[]> data) throws IOException {		// 在內存中生成工作薄		HSSFWorkbook workbook = makeWorkBook(sheetName, fieldName, data);		// 截取文件夾路徑		String filePath = path.substring(0, path.lastIndexOf("http://"));		// 如果路徑不存在,創建路徑		File file = new File(filePath);		// System.out.println(path+"-----------"+file.exists());		if (!file.exists())			file.mkdirs();		FileOutputStream fileOut = new FileOutputStream(path);		workbook.write(fileOut);		fileOut.close();	}	/**	 * 在輸出流中導出excel。	 * 	 * @param excelName	 *   導出的excel名稱 包括擴展名	 * @param sheetName	 *   導出的sheet名稱	 * @param fieldName	 *   列名數組	 * @param data	 *   數據組	 * @param response	 *   response	 * @throws IOException	 *    轉換流時IO錯誤	 * @author 宋立君	 * @date 2014年07月03日	 */	public void makeStreamExcel(String excelName, String sheetName,			String[] fieldName, List<Object[]> data,			HttpServletResponse response) throws IOException {		OutputStream os = null;		response.reset(); // 清空輸出流		os = response.getOutputStream(); // 取得輸出流		response.setHeader("Content-disposition", "attachment; filename="				+ new String(excelName.getBytes(), "ISO-8859-1")); // 設定輸出文件頭		response.setContentType("application/msexcel"); // 定義輸出類型		// 在內存中生成工作薄		HSSFWorkbook workbook = makeWorkBook(sheetName, fieldName, data);		os.flush();		workbook.write(os);	}	/**	 * 根據條件,生成工作薄對象到內存。	 * 	 * @param sheetName	 *   工作表對象名稱	 * @param fieldName	 *   首列列名稱	 * @param data	 *   數據	 * @return HSSFWorkbook	 * @author 宋立君	 * @date 2014年07月03日	 */	private HSSFWorkbook makeWorkBook(String sheetName, String[] fieldName,			List<Object[]> data) {		// 用來記錄最大列寬,自動調整列寬。		Integer collength[] = new Integer[fieldName.length];		// 產生工作薄對象		HSSFWorkbook workbook = new HSSFWorkbook();		// 產生工作表對象		HSSFSheet sheet = workbook.createSheet();		// 為了工作表能支持中文,設置字符集為UTF_16		workbook.setSheetName(0, sheetName);		// 產生一行		HSSFRow row = sheet.createRow(0);		// 產生單元格		HSSFCell cell;		// 寫入各個字段的名稱		for (int i = 0; i < fieldName.length; i++) {			// 創建第一行各個字段名稱的單元格			cell = row.createCell((short) i);			// 設置單元格內容為字符串型			cell.setCellType(HSSFCell.CELL_TYPE_STRING);			// 為了能在單元格中輸入中文,設置字符集為UTF_16			// cell.setEncoding(HSSFCell.ENCODING_UTF_16);			// 給單元格內容賦值			cell.setCellValue(new HSSFRichTextString(fieldName[i]));			// 初始化列寬			collength[i] = fieldName[i].getBytes().length;		}		// 臨時單元格內容		String tempCellContent = "";		// 寫入各條記錄,每條記錄對應excel表中的一行		for (int i = 0; i < data.size(); i++) {			Object[] tmp = data.get(i);			// 生成一行			row = sheet.createRow(i + 1);			for (int j = 0; j < tmp.length; j++) {				cell = row.createCell((short) j);				// 設置單元格字符類型為String				cell.setCellType(HSSFCell.CELL_TYPE_STRING);				tempCellContent = (tmp[j] == null) ? "" : tmp[j].toString();				cell.setCellValue(new HSSFRichTextString(tempCellContent));				// 如果自動調整列寬度。				if (autoColumnWidth) {					if (j >= collength.length) { // 標題列數小于數據列數時。						collength = CollectionUtil.addObjectToArray(collength,								tempCellContent.getBytes().length);					} else {						// 如果這個內容的寬度大于之前最大的,就按照這個設置寬度。						if (collength[j] < tempCellContent.getBytes().length) {							collength[j] = tempCellContent.getBytes().length;						}					}				}			}		}		// 自動調整列寬度。		if (autoColumnWidth) {			// 調整列為這列文字對應的最大寬度。			for (int i = 0; i < fieldName.length; i++) {				sheet.setColumnWidth(i, collength[i] * 2 * 256);			}		}		return workbook;	}	/**	 * 功能:設置寫入excel時,是否自動擴展列寬度來符合內容,默認為false。	 * 	 * @author 宋立君	 * @date 2014年07月03日	 * @param autoColumnWidth	 *   true或者false	 */	public void setAutoColumnWidth(boolean autoColumnWidth) {		this.autoColumnWidth = autoColumnWidth;	}}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一级做a爰片久久毛片美女图片| 久久久久久国产精品| 久久久999国产| 亚洲免费福利视频| 欧美成在线视频| 日韩专区在线播放| 2018日韩中文字幕| 午夜精品一区二区三区av| 国产综合色香蕉精品| 色悠悠久久久久| 青青久久av北条麻妃海外网| 欧美资源在线观看| 精品国产欧美一区二区三区成人| 九九九久久久久久| 国产女精品视频网站免费| 欧美午夜精品久久久久久久| 国产激情视频一区| 精品视频久久久久久| 欧美一级大片在线观看| 日本高清视频精品| 国产ts一区二区| 欧美疯狂xxxx大交乱88av| 久久精品视频在线| 国产成人在线一区二区| 国产精品夜色7777狼人| 亚洲午夜性刺激影院| 久久久久久中文字幕| 欧美视频国产精品| 成人观看高清在线观看免费| 欧美大片在线免费观看| www.日本久久久久com.| 欧美视频裸体精品| 青青久久av北条麻妃黑人| 欧美大成色www永久网站婷| 亚洲欧美精品伊人久久| 日韩免费在线电影| 国产一区二区动漫| 中文字幕亚洲欧美在线| 亚洲国产欧美一区二区三区同亚洲| 欧美国产一区二区三区| 一级做a爰片久久毛片美女图片| 亚洲一级一级97网| 最新国产成人av网站网址麻豆| 91啪国产在线| 国产成人精品免高潮在线观看| 亚洲自拍偷拍一区| 一本一道久久a久久精品逆3p| 色综合色综合网色综合| 久久精品最新地址| 欧美亚洲视频在线观看| 国产精品欧美日韩| 尤物99国产成人精品视频| 中文字幕日韩在线视频| 国产精品最新在线观看| 久久久久久成人| 这里只有精品在线播放| 91探花福利精品国产自产在线| 国产香蕉精品视频一区二区三区| 欧美老肥婆性猛交视频| 亚洲视频在线免费观看| 亚洲高清免费观看高清完整版| 8x海外华人永久免费日韩内陆视频| 欧美乱妇高清无乱码| 日韩在线观看免费av| 国产成人精品久久| 欧美精品videofree1080p| 538国产精品一区二区免费视频| 日韩电影在线观看永久视频免费网站| 91久久国产婷婷一区二区| 欧美国产第二页| 午夜精品福利在线观看| 欧美精品生活片| 欧美午夜片欧美片在线观看| 97av视频在线| 国产成人精品在线| 亚洲最大激情中文字幕| 日韩电影中文 亚洲精品乱码| 亚洲久久久久久久久久| 亚洲跨种族黑人xxx| 国产视频一区在线| 亚洲精品一区二区在线| 国产精品草莓在线免费观看| 日本中文字幕成人| 亚洲免费人成在线视频观看| 97视频在线观看免费高清完整版在线观看| 国产一区红桃视频| 日韩成人中文字幕在线观看| 国内成人精品视频| 久久久久久亚洲| 国产裸体写真av一区二区| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久久久久久久久久免费精品| 欧美极品欧美精品欧美视频| 色综合老司机第九色激情| 黑人极品videos精品欧美裸| 国产在线观看91精品一区| 日本韩国欧美精品大片卡二| 久久理论片午夜琪琪电影网| 国产精品久久久久久久久久ktv| 欧美在线亚洲在线| 久久久国产91| 欧美精品生活片| 欧美裸体xxxxx| 国产精品视频不卡| 欧美一级bbbbb性bbbb喷潮片| 国产成人亚洲综合91| 久久久电影免费观看完整版| 国内免费久久久久久久久久久| 日韩精品福利在线| 91精品国产777在线观看| 色777狠狠综合秋免鲁丝| 欧美一级bbbbb性bbbb喷潮片| 日韩电影在线观看免费| 亚洲自拍欧美色图| 91成人免费观看网站| 2019日本中文字幕| 日韩高清人体午夜| 欧美午夜女人视频在线| 俺也去精品视频在线观看| 91国在线精品国内播放| 国产视频一区在线| 亚洲欧美制服另类日韩| 精品久久久久久亚洲国产300| 亚洲国产精品久久精品怡红院| 日韩av毛片网| 精品国内自产拍在线观看| 精品视频在线播放色网色视频| 亚洲精品一区在线观看香蕉| 欧美小视频在线观看| 亚洲欧洲成视频免费观看| 国产精品高潮呻吟久久av无限| 欧美精品福利在线| 亚洲精品自拍第一页| 亚洲一区二区久久久| 一区二区三区四区在线观看视频| 中文字幕亚洲欧美| 日韩电影中文字幕一区| 日韩av日韩在线观看| 国产精品一区二区久久国产| 国产精品中文字幕久久久| 97色在线播放视频| 国产网站欧美日韩免费精品在线观看| 羞羞色国产精品| 久久精品视频在线播放| 久久久免费在线观看| 九九久久久久久久久激情| 91欧美激情另类亚洲| 亚洲va男人天堂| 国产精品视频地址| 国产精品久久久久久av福利软件| 98精品国产高清在线xxxx天堂| 久久久999国产精品| 亚洲黄色成人网| 欧美日韩国产第一页| 成人天堂噜噜噜| 亚洲高清免费观看高清完整版| 亚洲毛片在线观看.| 欧美日韩国产色| 色婷婷成人综合| 亚洲二区在线播放视频| 欧美性受xxxx黑人猛交| 亚洲综合成人婷婷小说| 国产成人av在线播放| 亚洲国产成人爱av在线播放|