使用poi读写excel文件
2013-01-24 15:57
435 查看
今天一个同学需要处理一个excel文件,于是我便在网上搜了一下方法,顺便自己研究一下。刚刚参考网上资料,使用poi库测试了一下读取excel文件,效果不错,跟大家分享一下。
要读取的excel文件内容如下:
![](http://cangzhitao.com/wp-content/uploads/2011/03/poi-excel-read.jpg)
第一列是数值型,第二列是字符型,代码如下:
下面是创建一个excel文件
要读取的excel文件内容如下:
![](http://cangzhitao.com/wp-content/uploads/2011/03/poi-excel-read.jpg)
第一列是数值型,第二列是字符型,代码如下:
package poi; import java.io.FileInputStream; import java.io.InputStream; import java.util.Iterator; import org.apache.poi.hssf.extractor.ExcelExtractor; import org.apache.poi.hssf.usermodel.HSSFCell; 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; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; /** * 测试poi读取excel文件内容 * @author lihui * */ public class TestRead { /** * @param args */ public static void main(String[] args){ HSSFWorkbook wb = null; POIFSFileSystem fs = null; try { //设置要读取的文件路径 fs = new POIFSFileSystem(new FileInputStream("d:\\book1.xls")); //HSSFWorkbook相当于一个excel文件,HSSFWorkbook是解析excel2007之前的版本(xls) //之后版本使用XSSFWorkbook(xlsx) wb = new HSSFWorkbook(fs); //获得sheet工作簿 HSSFSheet sheet = wb.getSheetAt(0); //获得行 HSSFRow row = sheet.getRow(3); //获得行中的列,即单元格 HSSFCell cell = row.getCell(0); //获得单元格中的值,这里该单元格的值为数字,所以使用getNumericCellValue,如为字符串则会报错 //如何取别的值,见print2方法 double msg = cell.getNumericCellValue(); System.out.println(msg); print1(); print2(); } catch (Exception e) { e.printStackTrace(); } } public static void print1() throws Exception { InputStream is = new FileInputStream("d:\\book1.xls"); HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(is)); //A text extractor for Excel files. //Returns the textual content of the file, suitable for indexing by something like Lucene, //but not really intended for display to the user. //用来获得整个excel文件的内容,表示为字符串 ExcelExtractor extractor = new ExcelExtractor(wb); //字符串所包含的类型,详见api extractor.setIncludeSheetNames(true); extractor.setFormulasNotResults(false); extractor.setIncludeCellComments(true); //获得字符串形式 String text = extractor.getText(); System.out.println(text); } public static void print2() throws Exception { HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream( "d:\\book1.xls")); HSSFSheet sheet = wb.getSheetAt(0); //迭代行 for (Iterator<Row> iter = (Iterator<Row>) sheet.rowIterator(); iter .hasNext();) { Row row = iter.next(); //迭代列 for (Iterator<Cell> iter2 = (Iterator<Cell>) row.cellIterator(); iter2 .hasNext();) { Cell cell = iter2.next(); //用于测试的文件就2列,第一列为数字,第二列为字符串 //对于数字cell.getCellType的值为HSSFCell.CELL_TYPE_NUMERIC,为0 //对于字符串cell.getCellType的值为HSSFCell.CELL_TYPE_STRING,为1 //完整的类型列表请查看api String content = cell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC?cell.getNumericCellValue()+"":cell.getStringCellValue(); System.out.println(content); } } } }
下面是创建一个excel文件
package poi; import java.io.FileOutputStream; 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.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFHyperlink; 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; public class TestWrite { /** * @param args */ public static void main(String[] args) throws Exception { // 创建Excel的工作书册 Workbook,对应到一个excel文档 HSSFWorkbook wb = new HSSFWorkbook(); // 创建Excel的工作sheet,对应到一个excel文档的tab HSSFSheet sheet = wb.createSheet("sheet1"); // 设置excel每列宽度 sheet.setColumnWidth(0, 4000); sheet.setColumnWidth(1, 3500); // 创建字体样式 HSSFFont font = wb.createFont(); font.setFontName("Verdana"); font.setBoldweight((short) 100); font.setFontHeight((short) 300); font.setColor(HSSFColor.BLUE.index); // 创建单元格样式 HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); style.setFillForegroundColor(HSSFColor.LIGHT_TURQUOISE.index); style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); // 设置边框 style.setBottomBorderColor(HSSFColor.RED.index); style.setBorderBottom(HSSFCellStyle.BORDER_THIN); style.setBorderLeft(HSSFCellStyle.BORDER_THIN); style.setBorderRight(HSSFCellStyle.BORDER_THIN); style.setBorderTop(HSSFCellStyle.BORDER_THIN); style.setFont(font);// 设置字体 // 创建Excel的sheet的一行 HSSFRow row = sheet.createRow(0); row.setHeight((short) 500);// 设定行的高度 // 创建一个Excel的单元格 HSSFCell cell = row.createCell(0); // 合并单元格(startRow,endRow,startColumn,endColumn) sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2)); // 给Excel的单元格设置样式和赋值 cell.setCellStyle(style); cell.setCellValue("hello world"); // 设置单元格内容格式 HSSFCellStyle style1 = wb.createCellStyle(); style1.setDataFormat(HSSFDataFormat.getBuiltinFormat("h:mm:ss")); style1.setWrapText(true);// 自动换行 row = sheet.createRow(1); // 设置单元格的样式格式 cell = row.createCell(0); cell.setCellStyle(style1); cell.setCellValue(new Date()); // 创建超链接 HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL); link.setAddress("http://www.baidu.com"); cell = row.createCell(1); cell.setCellValue("百度"); cell.setHyperlink(link);// 设定单元格的链接 FileOutputStream os = new FileOutputStream("e:\\workbook.xls"); wb.write(os); os.close(); } }
相关文章推荐
- 使用poi读写excel文件
- Jakarta_POI 使用Java读写Excel(97-2002)文件
- 使用POI读写EXCEL文件 [poi3.9]
- 使用poi框架读取excel文件
- java使用jxl包读写excel表格文件,即xls格式文件
- 使用POI实现在java程序中导入导出Excel文件数据
- C# 使用 ExcelLibrary 读写 Excel 文件
- 使用poi写excel文件
- 使用POI生成Excel文件,可以自动调整excel列宽遇到的问题及解决
- java使用POI读取excel文件,兼容xls和xlsx
- 【原创】.NET读写Excel工具Spire.Xls使用(2)Excel文件的控制
- 7.3 使用POI来处理Excel和Word文件格式
- 使用POI导入Excel文件信息
- JavaWeb使用POI操作Excel文件实例
- 使用POI生成Excel文件,可以自动调整excel列宽
- c#读写excel文件使用示例
- 使用POI生成Excel文件,可以自动调整excel列宽等
- 使用POI生成Excel文件,可以自动调整excel列宽等
- JXl(excel文件的读写操作)使用API(全)
- 使用POI同时对Excel文件进行读和写操作时避免Invalid header signatu