poi读写Excel文件

 
 
package dome.exp;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;

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;

public class ReadExcel {

	static String workStr = System.getProperty("user.dir");// 获取工程路径

	public static void main(String[] args) throws IOException {
		readExp();

	}
	/**
	 * 读取xls文件
	 * 
	 * @throws IOException
	 */
	public static void readExp() throws IOException {
		InputStream is = new FileInputStream(workStr + "\\workbook2.xls");
		HSSFWorkbook wb = new HSSFWorkbook(is);// 获取工作簿
		// HSSFSheet sheet = wb.getSheetAt(0);//获取表
		int sheetNum = wb.getNumberOfSheets();// 获取表的个数;
		for (int i = 0; i < sheetNum; i++) {
			HSSFSheet sheet = wb.getSheetAt(i);// 获取当前的表
			System.out.println("当前表为:" + sheet.getSheetName());
			int rowNum = sheet.getLastRowNum();// 获取行数;
			for (int j = 0; j < rowNum; j++) {
				HSSFRow currRow = sheet.getRow(j);// 获取当前行
				int cellNum = currRow.getLastCellNum();// 获取列数
				for (int k = 0; k < cellNum; k++) {
					HSSFCell currCell = currRow.getCell(k);// 获取当前行列的单元格
					// 判断单元格的数据类型
					switch (currCell.getCellType()) {
					case HSSFCell.CELL_TYPE_NUMERIC:// 数值型
						// 如果是日期类型的
						// System.out.println("-----"+currCell.getCellStyle().getDataFormat());
						if (HSSFDateUtil.isCellDateFormatted(currCell)) {// 对于带中文年月日的无法判断
							SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd" + "\t");
							// System.out.print(sdf.format(currCell.getDateCellValue())+"\t");
							String date = sdf.format(HSSFDateUtil.getJavaDate(currCell.getNumericCellValue()));
							System.out.print(date);
							// System.out.print(currCell.getStringCellValue()+"日期"+"\t");
						} else {// 纯数字型
							//对数字的处理
							if (currCell.getNumericCellValue() > Double.MAX_VALUE) {
								DecimalFormat df = new DecimalFormat("#");// 解决电话号码用指数形式显示的问题
								// System.out.print(df.format(currCell.getNumericCellValue())+"\t");
							} else {
								System.out.print(currCell.getNumericCellValue()+ "\t");
							}
							// System.out.print(currCell.getStringCellValue()+"\t");
						}
						break;
					case HSSFCell.CELL_TYPE_STRING:// 字符串类型
						System.out.print(currCell.getStringCellValue() + "\t");
						break;
					default:
						System.out.print("");
						break;
					}

				}
				System.out.println();// 换行
			}
		}
	}

}
 
 
 
 
<img src="https://img-blog.youkuaiyun.com/20141011233535615?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDIzMjExMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="https://img-blog.youkuaiyun.com/20141011233627033?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDIzMjExMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="https://img-blog.youkuaiyun.com/20141011233611261?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDIzMjExMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<pre class="java" name="code">package dome.exp;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
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.hssf.util.CellRangeAddress;
import org.apache.poi.hssf.util.HSSFColor;

/**
 * 创建excel文件
 * 
 * @author qozi
 * 
 */
public class DoExcel {
	static String workStr = System.getProperty("user.dir");

	public static void main(String[] args) throws IOException {
		createBlack();// 创建一个空的excel文件
		//createDetail();//创建一个有内容的excel文件
	}

	/**
	 * 创建空excel文件
	 * 
	 * @throws IOException
	 */
	public static void createBlack() throws IOException {
		System.out.println(workStr);// 获取当前项目路径
		// 创建一个excel文件
		HSSFWorkbook wb = new HSSFWorkbook();
		FileOutputStream fileOut = new FileOutputStream(workStr
				+ "\\workbook.xls");
		wb.write(fileOut);
		fileOut.close();
	}

	/**
	 * 创建并操作excel文件的内容
	 * @throws IOException 
	 */
	@SuppressWarnings("deprecation")
	public static void createDetail() throws IOException {
		HSSFWorkbook wb = new HSSFWorkbook();// 创建HSSFWorkbook对象
		HSSFSheet sheet = wb.createSheet("new sheet");// 创建HSSFSheet对象
		HSSFRow row = sheet.createRow(0);// 在sheet里创建一行,参数为行号(第一行,此处可想象成数组)
		HSSFCell cell = row.createCell(0);//在row里新建cell,参数为列号(第一列)
		cell.setCellValue(1);
		row.createCell(1).setCellValue(1.2);
		row.createCell(2).setCellValue("test");
		row.createCell(3).setCellValue(true);
		
		HSSFCellStyle cellStyle = wb.createCellStyle();//新建cell样式
		cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
		cellStyle.setAlignment(HSSFCellStyle.VERTICAL_CENTER);
		HSSFCell dCell = row.createCell(4);
		dCell.setCellValue(new Date());
		dCell.setCellStyle(cellStyle);
		
		HSSFCell csCell= row.createCell(5);
		//csCell.setEncoding(HSSFCell.ENCODING_UTF_16);
		csCell.setCellValue("中文测试——chinese words test");
		
		row.createCell(6).setCellType(HSSFCell.CELL_TYPE_ERROR);
		
		//sheet.addMergedRegion(new Region(1,2,0,6));
		CellRangeAddress cra = new CellRangeAddress(1, 2, 0, 6);
		sheet.addMergedRegion(cra);//合并单元格
		
		HSSFCellStyle style = wb.createCellStyle();
		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置对齐方式,还有很多属性都可以通过这个属性设置。如字体等
		//style.setFillBackgroundColor(HSSFColor.BLUE.index);//设置背景颜色
		style.setFillForegroundColor(HSSFColor.GREEN.index);
		HSSFCell cell2 = sheet.createRow(1).createCell(0);
		cell2.setCellValue("设置单元个样式");
		cell2.setCellStyle(style);
		
		
		
		FileOutputStream fileOut = new FileOutputStream(workStr
				+ "\\workbook1.xls");
		wb.write(fileOut);
		fileOut.close();
		System.out.println("创建完毕");
	}
}


 


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值