解析excel文件|java如何读取整个excel文件的内容

解析excel文件|java如何读取整个excel文件的内容的第1张示图

㈠ java解析.xlsb格式的excel文件

通过这个例子,演示以下如何用java生成excel文件:import org.apache.poi.hssf.usermodel.*;import java.io.FileOutputStream;import java.io.IOException;publicclass CreateCells{publicstaticvoid main(String[] args)throws IOException{HSSFWorkbook wb = new HSSFWorkbook();//建立新HSSFWorkbook对象HSSFSheet sheet = wb.createSheet("new sheet");//建立新的sheet对象// Create a row and put some cells in it. Rows are 0 based.HSSFRow row = sheet.createRow((short)0);//建立新行// Create a cell and put a value in it.HSSFCell cell = row.createCell((short)0);//建立新cellcell.setCellValue(1);//设置cell的整数类型的值// Or do it on one line.row.createCell((short)1).setCellValue(1.2);//设置cell浮点类型的值row.createCell((short)2).setCellValue("test");//设置cell字符类型的值row.createCell((short)3).setCellValue(true);//设置cell布尔类型的值HSSFCellStyle cellStyle = wb.createCellStyle();//建立新的cell样式cellStyle.setDataFormat(HSSFDataFormat.getFormat("m/d/yy h:mm"));//设置cell样式为定制的日期格式HSSFCell dCell =row.createCell((short)4);dCell.setCellValue(new Date());//设置cell为日期类型的值dCell.setCellStyle(cellStyle); //设置该cell日期的显示格式HSSFCell csCell =row.createCell((short)5);csCell.setEncoding(HSSFCell.ENCODING_UTF_16);//设置cell编码解决中文高位字节截断csCell.setCellValue("中文测试_Chinese Words Test");//设置中西文结合字符串row.createCell((short)6).setCellType(HSSFCell.CELL_TYPE_ERROR);//建立错误cell// Write the output to a fileFileOutputStream fileOut = new FileOutputStream("workbook.xls");wb.write(fileOut);fileOut.close();}}从以上例子,可以清楚的看到xls文件从大到小包扩了 HSSFWorkbook HSSFSheet HSSFRow HSSFCell这样几个对象。还可以在cell中设置各种类型的值。尤其要注意的是如果你想正确的显示非欧美的字符时,尤其象中日韩这样的语言,必须 设置编码为16位的即是HSSFCell.ENCODING_UTF_16,才能保证字符的高8位不被截断而引起编码失真形成乱码。 其他测试可以通过参考examples包中的测试例子掌握poi的详细用法,包括字体的设置,cell大小和低纹的设置等。需要注意的是POI是一 个仍然在完善中的公开代码的项目,所以有些功能正在不断的扩充。如HSSFSheet的getFooter() getHeader()和 setFooter(HSSFFooter hsf) setHeader(HSSFHeader hsh)是在POI1.7中才有的,而POI1.5中就没有。运行测试熟悉代码或者使用它做项目时请注意POI的版本。 另外需要注意的是HSSF也有它的对xls基于事件的解析。可以参考例程中的EventExample.java。它通过实现 HSSFListener完成从普通流认知Xls中包含的内容,在apache Cocoon中的 org.apache.cocoon.serialization.HSSFSerializer中用到了这个解析。因为Cocoon2 是基于事件的,所以POI为了提供快速的解析也提供了相应的事件。当然我们自己也可以实现这个事件接口。 因为POI还不是一个足够成熟的项目,所以有必要做进一步的开发和测试。但是它已经为我们用纯java操作ole2对象提供了可能,而且克服了ole对象调用的缺陷,提供了服务器端的Excel解决方案。 利用Java 创建和读取Excel文档 为了保证示例程序的运行,必须安装Java 2 sdk1.4.0 和Jakarta POI,Jakarta POI的Web站点是: http://jakarta.apache.org/poi/示例1将演示如何利用Jakarta POI API 创建Excel 文档。 示例1程序如下:import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFCell;import java.io.FileOutputStream;publicclass CreateXL {/** Excel 文件要存放的位置,假定在D盘JTest目录下*/publicstatic String outputFile="D:/JTest/ gongye.xls";publicstaticvoid main(String argv[]){try{// 创建新的Excel 工作簿HSSFWorkbook workbook = new HSSFWorkbook();// 在Excel工作簿中建一工作表,其名为缺省值// 如要新建一名为"效益指标"的工作表,其语句为:// HSSFSheet sheet = workbook.createSheet("效益指标");HSSFSheet sheet = workbook.createSheet();// 在索引0的位置创建行(最顶端的行)HSSFRow row = sheet.createRow((short)0);//在索引0的位置创建单元格(左上端)HSSFCell cell = row.createCell((short) 0);// 定义单元格为字符串类型cell.setCellType(HSSFCell.CELL_TYPE_STRING);// 在单元格中输入一些内容cell.setCellValue("增加值");// 新建一输出文件流FileOutputStream fOut = new FileOutputStream(outputFile);// 把相应的Excel 工作簿存盘workbook.write(fOut);fOut.flush();// 操作结束,关闭文件fOut.close();System.out.println("文件生成…");}catch(Exception e) {System.out.println("已运行 xlCreate() : " + e );}}}这里演示创建和设置字体和单元格的格式,然后再应用这些格式:1、创建字体,设置其为红色、粗体:HSSFFont font = workbook.createFont();font.setColor(HSSFFont.COLOR_RED);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);2、创建格式HSSFCellStyle cellStyle= workbook.createCellStyle();cellStyle.setFont(font);3、应用格式 HSSFCell cell = row.createCell((short) 0);cell.setCellStyle(cellStyle);cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setCellValue("标题 ");总之,如本篇文章所演示的一样,Java程序员不必担心Excel工作表中的数据了,利用Jakarta POI API, 就可以轻易的在程序中存取Excel文档。

㈡ 如何读取excel中的文本文件

方法/步骤假如我们抄有这袭样一份文本文件,里面记载了我们公司所生产的所有产品名称,现在我们需要将这些产品名称制作成一个excel工作表,如果将文本文件中的产品名称一个个复制、粘贴到excel中的话,需要花费很多时间打开excel新建一个工作表,单击选择excel菜单栏中的“数据”选项卡,选择“自文本”,在弹出的对话框中找到需要导入的文本文件,点击“确定”。在弹出的“文本导入向导”对话框中,选择“分隔符号”,然后点击“下一步”第二步,我们可以选择不同的分隔符号,并能实时预览分隔效果。因为我们的文本文件是用空格来分列的,所以选择“空格”作为我们的分隔符号。然后点击“下一步”。5第三步,我们可以对导入的文本文件进行列数据格式设置,还可以不导入某些数据。选择好了之后,单击“完成”按钮,弹出“导入数据”对话框,选择数据的放置位置,在这里我们选择“现有工作表”,然后单击“确定”,我们想要的数据已经导入到工作表中了。

㈢ 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<rowcount; p="" {

for (int j = 0; j<columncount; p="" {

//注意,这里的两个参数,第一个是表示列的,第二才表示行

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("");

}

System.out.print("");

}

//关闭它,否则会有内存泄露

workbook.close();

㈣ java如何读取整个excel文件的内容

在Java中读取Excel文件的内容

在这里,我使用的是一个叫Java Excel API的东西,类似的还有的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<rowcount; p="" {

for (int j = 0; j<columncount; p="" {

//注意,这里的两个参数,第一个是表示列的,第二才表示行

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("");

}

System.out.print("");

}

//关闭它,否则会有内存泄露

workbook.close();

㈤ C#如何高效读取EXCEL文件

List<Employee> employeeList = new List<Employee>(); DataTable ExcelTable; string sExcelFile = @"E:\documents\data.xls"; ExcelData excelData = new ExcelData(); string tableName = "num$";//schemaTable.Rows[2][2].ToString().Trim(); ;//获取 Excel 的表名,默认值是sheet1 ExcelTable = excelData.GetExcelData(sExcelFile, tableName); int i = 0; int comp = 0; foreach (DataRow dr in ExcelTable.Rows) { if (i == 0)//第一行为标题 {int count=dr.ItemArray.Count(); for (int j = 0; j < count; j++) { if ("CompName".Equals(dr[j].ToString())) { comp = j; break; } } i++; continue; } if (dr.Table.Rows.Count < 1) { break; } Employee e = new Employee(); if (!string.IsNullOrEmpty(dr[comp].ToString())) { e.EmployeeTel = dr[comp].ToString(); }employeeList .Add(e);

㈥ JAVA读取EXCEL文件

相关功能代码比较多 贴出来不是很方便 我跟你说一下思路吧首先是用到的工具是poi 这个你可以去官网载一个其次 你要注意区分你的excel 是旧的还是新的 office 07版之前和07版之后的 读取的类不一样把握住这2点 差不多就OK了大体的读取流程是读取workbook -> sheet -> row -> col

㈦ 如何打开一个excel文件读取多个文件

宏病毒删除完毕没?删除后请往下看找到c:\documentsandsettings\administrator\applicationdata\microsoft\excel\xlstart~~注意通常applicationdata是作为隐藏文件夹的,所以要先显示所有文件夹把里面的book1删掉接着去c:\programfiles\microsoftoffice\office11\xlstart,也把里面的东西删掉~~顺便说下:如果上述两个文件夹都有book1,那么打开excel的时候就会有提示两次“无法读取文件”,如果只有一个,那么就提示一次~~

㈧ java中怎么读取excel文件

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<String> exportListFromExcel(File file, int sheetNum)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> exportListFromExcel(InputStream is,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<String> exportListFromExcel(Workbook workbook,int sheetNum) {Sheet sheet = workbook.getSheetAt(sheetNum);// 解析公式结果FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();List<String> list = new ArrayList<String>();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.htmlswitch (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<String> listS= exportListFromExcel(new File(path),0);for(int i=0;i<listS.size();i++){System.out.println(listS.get(i));}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

㈨ 怎样读取Excel文件中的数据

VLOOKUP是一个查找函数,给定一个查找的目标,它就能从指定的查找区域中查找返回想要查找到的值。它的基本语法为: VLOOKUP(查找目标,查找范围,返回值的列数,精确OR模糊查找)下面以一个实例来介绍一下这四个参数的使用 例1:如下图所示,要求根据表二中的姓名,查找姓名所对应的年龄。 公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0) 参数说明:1 查找目标:就是你指定的查找的内容或单元格引用。本例中表二A列的姓名就是查找目标。我们要根据表二的“姓名”在表一中A列进行查找。 公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0) 2 查找范围(VLOOKUP(A13,$B$2:$D$8,3,0) ):指定了查找目标,如果没有说从哪里查找,EXCEL肯定会很为难。所以下一步我们就要指定从哪个范围中进行查找。VLOOKUP的这第二个参数可以从一个单元格区域中查找,也可以从一个常量数组或内存数组中查找。本例中要从表一中进行查找,那么范围我们要怎么指定呢?这里也是极易出错的地方。大家一定要注意,给定的第二个参数查找范围要符合以下条件才不会出错: A 查找目标一定要在该区域的第一列。本例中查找表二的姓名,那么姓名所对应的表一的姓名列,那么表一的姓名列(列)一定要是查找区域的第一列。象本例中,给定的区域要从第二列开始,即$B$2:$D$8,而不能是$A$2:$D$8。因为查找的“姓名”不在$A$2:$D$8区域的第一列。 B 该区域中一定要包含要返回值所在的列,本例中要返回的值是年龄。年龄列(表一的D列)一定要包括在这个范围内,即:$B$2:$D$8,如果写成$B$2:$C$8就是错的。3 返回值的列数(B13 =VLOOKUP(A13,$B$2:$D$8,3,0))。这是VLOOKUP第3个参数。它是一个整数值。它怎么得来的呢。它是“返回值”在第二个参数给定的区域中的列数。本例中我们要返回的是“年龄”,它是第二个参数查找范围$B$2:$D$8的第3列。这里一定要注意,列数不是在工作表中的列数(不是第4列),而是在查找范围区域的第几列。如果本例中要是查找姓名所对应的性别,第3个参数的值应该设置为多少呢。答案是2。因为性别在$B$2:$D$8的第2列中。

㈩ Poi如何去读取excel文件

直接全部在action里面写的,这个就不多说了,直接上代码:public String executeExcel() throws Exception{ String realPath = ServletActionContext.getServletContext().getRealPath("/fileupload"); System.out.println(fileFileName); String filePath = ""; if(this.file!=null){ File saveFile = new File(new File(realPath),this.fileFileName); filePath = realPath+"\\"+this.fileFileName; System.out.println(filePath); if(!saveFile.getParentFile().exists()){ saveFile.getParentFile().mkdirs(); } FileUtils.File(file, saveFile); } this.exlToDB(filePath); ActionContext.getContext().put("message","导入成功"); return "success"; } //读取excel2007,并把数据插入数据库 public void exlToDB(String filePath){ boolean flag = true; AllKpi akpi = new AllKpi(); try { // 文件流指向excel文件 FileInputStream fin=new FileInputStream(filePath); XSSFWorkbook workbook = new XSSFWorkbook(fin);// 创建工作薄 XSSFSheet sheet = workbook.getSheetAt(0);// 得到工作表 XSSFRow row = null;// 对应excel的行 XSSFCell cell = null;// 对应excel的列 int totalRow = sheet.getLastRowNum();// 得到excel的总记录条数 System.out.println(totalRow); // 以下的字段一一对应数据库表的字段 float idd = 0.0f; String id = ""; String Name = ""; String DEPT_NAME = ""; String Weight = ""; <span></span>String ALGORITHM = ""; String text = " "; //String sql = "insert into DSP_TJ_KPI values(DSP_TJ_KPI_SEQ.nextval,?,?,?,'无',?)"; for (int i = 1; i <= totalRow; i++) { row = sheet.getRow(i); //System.out.println(row.getCell(0).toString()); if(row.getCell(0) != null && !"".equals(row.getCell(0)) && row.getCell(1) != null && !"".equals(row.getCell(1)) && row.getCell(2) != null && !"".equals(row.getCell(2)) && row.getCell(3) != null && !"".equals(row.getCell(3))){ cell = row.getCell((short) 0); Name = cell.toString(); System.out.println(Name); cell = row.getCell((short) 1); Weight = cell.toString(); System.out.println(Weight); cell = row.getCell((short) 2); DEPT_NAME = cell.toString(); System.out.println(DEPT_NAME); cell = row.getCell((short) 3); ALGORITHM = cell.toString(); System.out.println(ALGORITHM); akpi.setAllkpiName(Name); akpi.setAllkpiDeptName(DEPT_NAME); akpi.setAllkpiWeight(Weight); akpi.setAlgorithm(ALGORITHM); akpi.setText(text); allKpiService.addAllKpi(akpi); //以下注释代码为连接jdbc测试代码块 /*pst = con.prepareStatement(sql); //pst.setString(1, student_id); pst.setString(1, DEPT_NAME); pst.setString(2, Name); pst.setString(3, Weight); <span></span>pst.setString(4, ALGORITHM); pst.execute();*/ System.out.println("preparestatement successful"); } } /*pst.close(); con.close();*/ fin.close(); } catch (FileNotFoundException e) { flag = false; e.printStackTrace(); } catch (IOException ex) { flag = false; ex.printStackTrace(); }

未经允许不得转载:山九号 » 解析excel文件|java如何读取整个excel文件的内容

赞 (0)