乔山办公网我们一直在努力
您的位置:乔山办公网 > office365 > java如何读取整个excel文件的内容-java读取office,java实现office预览

java如何读取整个excel文件的内容-java读取office,java实现office预览

作者:乔山办公网日期:

返回目录:office365


使用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的工e69da5e887aae799bee5baa6364作表,采用工作表的索引值
HSSFSheet sheet = workbook.getSheetAt(0);
HSSFRow row ;
HSSFCell cell1;
int rows=sheet.getLastRowNum();
for(int icount=0;icount<rows;icount++){
row = sheet.getRow(icount);
int line=row.getPhysicalNumberOfCells();
for(int j=0;j<line;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();
}
}
}

在Java中读取Excel文件的内容

在这里,我使用的是一个叫Java Excel API的东西,类似的还有jakarta的POI,不过感觉那个

太复杂了点儿。而且jxl对中文的支持相当的好,至少我在用的过程中一点问题没出。

一、下载地址

http://www.andykhan.com/jexcelapi/

二、特性

可以读取Excel 95, 97, 2000文件

可以读或写Excel 97及其以后版本的的公式(不过我发现好像有bug)

生成Excel 97格式的电子表格

支持字体、数字和日期格e5a48de588b6e799bee5baa6362式化

支持单元格的颜色和阴影

可以编辑现有的文件

三、读文件

//声明一下,记得后面要关闭哦。。

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

}

System.out.print("\n");

}

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

workbook.close();


/**
*
* <p>标题:readExcel</p>
* <p>描述:读取Excel文件数据</p>
* @param excelfilePath Excel文件路径
* @param startRow 开始行
* @param startCol 开始列
* @return List<ArrayList<String>>
* @throws IOException
* @throws BiffException
*/
public List<Map<String, Object>> readExcel(String excelfilePath,int startRow, int startCol)
throws IOException, BiffException {
// 读取xls文件
InputStream ins = new FileInputStream(excelfilePath);
// 设置读文件编码
WorkbookSettings setEncode = new WorkbookSettings();
setEncode.setEncoding("UTF-8");
Workbook rwb = Workbook.getWorkbook(ins, setEncode);
List<Map<String, Object>> alldata = new ArrayList<Map<String, Object>>();
Map<String, Object> data = null;
alldata.clear();
// 获得当前Excel表共有几个sheet
Sheet[] sheets = rwb.getSheets();
// 获得表数
int pages = sheets.length;
// 将excel表中的数据读取出来
// 在从Excel中读取数据的时候不需要知道每个sheet有几行,有那多少列
for (int i = 0; i < pages; i++) {
//这里读取excel中每个sheet的数据,Sheet sheet = rwb.getSheet(i); 读取第二个sheet就是getSheet(1);
Sheet sheet = rwb.getSheet(i);
int cols = sheet.getColumns(); // 列
// 读取每一行对应的列数e69da5e887aae799bee5baa6336
// 循环读取每一行的全部列数目的内容
int rows = sheet.getRows(); // 行
for (int r = startRow; r < rows; r++) {
data = new HashMap<String, Object>();
// 行循环,Excel的行列是从(0,0)开始
for (int c = startCol; c < cols; c++) {
Cell excelRows = sheet.getCell(c, r);
data.put("bgbh", excelRows.getContents());
}
alldata.add(data);
}
}
ins.close();
return alldata;
}

debug跟踪一下下面几处:
1)是否读取到excel文件。
2)
int rowNum = childSheet.getLastRowNum(); //获取当前sheet有多少行,看看有多少行,是否和excel中数据行数一致。
3)
int cellNum=row.getLastCellNum(); //每行有多少列(格),看看每条数据的数据项多少是否和excel中一致。
顺便说下,楼上的说的你把读取excel代码给注释掉了,去掉注释看看。(下面几行)
// for(int k=0;k<cellNum;k++) //此循环用来规范数据,如果某个格子里没有数据为空, 则替换成--
// {
// rows[k]=row.getCell(k)==null ? " -- " : row.getCell(k).toString();
// }

相关阅读

  • <em>java</em>使用openoffice.org将word转pdf出...-java

  • 乔山办公网office365
  • 两种方式:1、纯百Java,用POI来做度2、用JNA调用word接口,根据office api来做第一种呢对于java开发来说相对简单知,但是需要学道POI,而且估计有些格式控制不好。第回二种要学习JNA,而
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网