java读取excel文件两种方式?通过java的poi读取xlsx文件:将excel文件使用文件流读取 把excel的文件流转化成excel的工作薄 获取工作薄的sheet(工作表),迭代获取 最后再次迭代每一个sheet,获取每一行的每一个单元格,那么,java读取excel文件两种方式?一起来了解一下吧。
在Java中读取Excel文件的内容
在这里,我使用的是一个叫Java Excel API的东西,类似的还有jakarta的POI,不过感觉那个
太复杂了点儿。而且jxl对中文的支持相当的好,至少我在用的过程中蚂友一点问题没出。
一、地址
http://www.andykhan.com/jexcelapi/
二、特性
可以读取Excel 95, 97, 2000文件
可以读或写Excel 97及其以后版本的的公式(不过我发现好像有bug)
生成孝物早Excel 97格式的电子表格
支持字体、数字和日期格式化
支持单元格的颜色和阴影巧雀
可以编辑现有的文件
三、读文件
//声明一下,记得后面要关闭哦。
Workbook workbook = null;
try {
workbook = Workbook.getWorkbook(new File("d:\\temp\\TestRead.xls"));
} catch (Exception e) {
throw new Exception("file to import not found!");
}
Sheet sheet = workbook.getSheet(0);
Cell cell = null;
int columnCount=3;
int rowCount=sheet.getRows();
for (int i = 0; i for (int j = 0; j //注意,这里的两个参数,第一个是表示列的,第二才表示行 cell=sheet.getCell(j, i); //要根据单元格的类型分别做处理,否则格式化过的内容可能会不正确 if(cell.getType()==CellType.NUMBER){ System.out.print(((NumberCell)cell).getValue()); } else if(cell.getType()==CellType.DATE){ System.out.print(((DateCell)cell).getDate()); } else{ System.out.print(cell.getContents()); } //System.out.print(cell.getContents()); System.out.print("\t"); } System.out.print("\n"); } //关闭它,否则会有内存泄露 workbook.close(); 使用java poi package webservice; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; 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; public class ExcelController { @SuppressWarnings("deprecation") public void excel() throws FileNotFoundException, IOException{ String filename = "d:\\excel.xls"; HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filename)); //按名引毕旅用拦凳excel工作表 //HSSFSheet sheet = workbook.getSheet("JSP"); //也可以用以下方式来获取excel的工作表,采用工作表的索引值 HSSFSheet sheet = workbook.getSheetAt(0); HSSFRow row ; HSSFCell cell1; int rows=sheet.getLastRowNum(); for(int icount=0;icount row = sheet.getRow(icount); int line=row.getPhysicalNumberOfCells(); for(int j=0;j cell1= row.getCell(j); System.out.println(cell1+"--"+icount+"---"+j); } } //打印读取值 //System.out.println(cell.getStringCellValue()); //新建一输出流 FileOutputStream fout = new FileOutputStream(filename);//PS:filename 是你另存为的路径,不处简数旅理直接写入模版文件 //存盘 workbook.write(fout); fout.flush(); //结束关闭 fout.close(); } public HSSFCell getCell(HSSFRow row, int index) { // 取得分发日期单元格 HSSFCell cell = row.getCell(index); // 如果单元格不存在 if (cell == null) { // 创建单元格 cell = row.createCell(index); } // 返回单元格 return cell; } public static void main(String[] args) { ExcelController ec = new ExcelController(); try { ec.excel(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.IOException; importorg.apache.poi.hssf.usermodel.HSSFCell; importorg.apache.poi.hssf.usermodel.HSSFSheet; importorg.apache.poi.hssf.usermodel.HSSFWorkbook; importorg.apache.poi.poifs.filesystem.POIFSFileSystem; /** *@authorGerrard *@Discreption根据已有的Excel模板汪灶激,修改模板内容生成新Excel */ publicclassCreateExcel{ publicstaticvoidmain(String[]args)throwsIOException{ //excel模板路径 Filefi=newFile("D:\\test.xls"); POIFSFileSystemfs=newPOIFSFileSystem(newFileInputStream(fi)); //读取excel模板 HSSFWorkbookwb=new困袜HSSFWorkbook(fs); //读取了模板内所有辩滑sheet内容 HSSFSheetsheet=wb.getSheetAt(0); //在相应的单元格进行赋值 HSSFCellcell=sheet.getRow(1).getCell(3); cell.setCellValue("测试"); HSSFCellcell2=sheet.getRow(3).getCell(3); cell2.setCellValue("数据"); HSSFCellcell3=sheet.getRow(0).getCell(0); cell3.setCellValue("大标题"); //修改模板内容导出新模板 FileOutputStreamout=newFileOutputStream("D:/export.xls"); wb.write(out); out.close(); } } 注意引入POI的jar包 JavaEXCELAPI简介 JavaExcel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。 应用示例 从Excel文件读取数据表 Java ExcelAPI既可以从本地文件的一个文件(.xls),也可以从输入流中读取Excel数据表。读取Excel数据表的第一步是创建Workbook(术语:工作薄),睁中下面的早春代码片段举例说明了应该如何操作: 需要用到一个开源的jar包,jxl.jar。 InputStreamin=newFileInputStream(file); Workbookworkbook=Workbook.getWorkbook(in); //获取第一张Sheet表 Sheetsheet=workbook.getSheet(0); //我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。 package com.jqgj.test; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import org.apache.commons.io.FilenameUtils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellValue; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.FormulaEvaluator; 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 ImportNameTest { /** * Excel 2003 */ private final static String XLS = "xls"; /** * Excel 2007 */ private final static String XLSX = "xlsx"; /** * 分隔符 */ private final static String SEPARATOR = "竖返渗|"; /** * 由Excel文世烂件的Sheet导出至List * * @param file * @param sheetNum * @return */ public static List throws IOException { return exportListFromExcel(new FileInputStream(file), FilenameUtils.getExtension(file.getName()), sheetNum); } /** * 由Excel流的Sheet导出至List * * @param is * @param extensionName * @param sheetNum * @return * @throws IOException */ public static List String extensionName, int sheetNum) throws IOException { Workbook workbook = null; if (extensionName.toLowerCase().equals(XLS)) { workbook = new HSSFWorkbook(is); } else if (extensionName.toLowerCase().equals(XLSX)) { workbook = new XSSFWorkbook(is); } return exportListFromExcel(workbook, sheetNum); } /** * 由指定的Sheet导出至List * * @param workbook * @param sheetNum * @return * @throws IOException */ private static List int sheetNum) { Sheet sheet = workbook.getSheetAt(sheetNum); /余脊/ 解析公式结果 FormulaEvaluator evaluator = workbook.getCreationHelper() .createFormulaEvaluator(); List int minRowIx = sheet.getFirstRowNum(); int maxRowIx = sheet.getLastRowNum(); for (int rowIx = minRowIx; rowIx <= maxRowIx; rowIx++) { Row row = sheet.getRow(rowIx); StringBuilder sb = new StringBuilder(); short minColIx = row.getFirstCellNum(); short maxColIx = row.getLastCellNum(); for (short colIx = minColIx; colIx <= maxColIx; colIx++) { Cell cell = row.getCell(new Integer(colIx)); CellValue cellValue = evaluator.evaluate(cell); if (cellValue == null) { continue; } // 经过公式解析,最后只存在Boolean、Numeric和String三种数据类型,此外就是Error了 // 其余数据类型,根据文档,完全可以忽略http://poi.apache.org/spreadsheet/eval.html switch (cellValue.getCellType()) { case Cell.CELL_TYPE_BOOLEAN: sb.append(SEPARATOR + cellValue.getBooleanValue()); break; case Cell.CELL_TYPE_NUMERIC: // 这里的日期类型会被转换为数字类型,需要判别后区分处理 if (DateUtil.isCellDateFormatted(cell)) { sb.append(SEPARATOR + cell.getDateCellValue()); } else { //把手机号码转换为字符串 DecimalFormat df = new DecimalFormat("#"); sb.append(SEPARATOR + df.format(cellValue.getNumberValue())); } break; case Cell.CELL_TYPE_STRING: sb.append(SEPARATOR + cellValue.getStringValue()); break; case Cell.CELL_TYPE_FORMULA: break; case Cell.CELL_TYPE_BLANK: break; case Cell.CELL_TYPE_ERROR: break; default: break; } } list.add(sb.toString()); } return list; } /** * @param args */ public static void main(String[] args) { String path = "f:\\telName.xlsx"; try { List for(int i=0;i System.out.println(listS.get(i)); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 以上就是java读取excel文件两种方式的全部内容,因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。应用示例 从Excel文件读取数据表 Java Excel API既可以从本地文件的一个文件(.xls)。Java读取xlsfile文件
java实现导出excel
packageexcelPoiTest;
java从文件中读取数据
Filefile=newFile("c:\\a.xls");
java读取表格数据