excel文件生成代码:
package cn.excel;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFHeader;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
* yicha
* Jun 17, 2008
*/
public class CreateXLS {
HSSFRow row = null;
HSSFCell cell=null;
/**
* 创建新的excel和新的sheet
* @return
*/
public HSSFSheet getSheet(){
// 创建新的Excel工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();//创建默认的sheet
return sheet;
}
/**
* 创建表头
* @param tableHeader
*/
public void createTableHeader(HSSFSheet sheet,String[] tableHeader){
// HSSFSheet sheet=this.getSheet();
HSSFHeader header=sheet.getHeader();
header.setCenter("世界五百强企业名次表");
row=sheet.createRow(0);
for(int i=0;i<tableHeader.length;i++){
cell=row.createCell((short)i);
cell.setCellValue(tableHeader[i]);
}
}
/**
* 创建行
* @param outputFile
* @param tableHeaderk
* @param list
*/
public void createTableRow(HSSFSheet sheet,String[] tableHeader,List list){
// HSSFSheet sheet=this.getSheet();
for(int i=1;i<list.size()+1;i++){//创建行
row=sheet.createRow((short)i);
for(int j=0;j<tableHeader.length;j++){//创建列
cell = row.createCell((short) j);
// 定义单元格为字符串类型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
// 在单元格中输入一些内容
cell.setCellValue(list.get(i-1).toString());
// 应用格式
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
//cell.setCellValue("标题");
}
}
}
/**
* 创建指定某行的数据
* @param sheet
* @param tableHeader
* @param list 存放的是具体的数据,string类型或者为基本数据类型
* @param rowIndex
*/
public void createTalbeRow2(HSSFSheet sheet,List list,int rowIndex){
row=sheet.createRow((short)rowIndex);
for(int i=0;i<list.size();i++){//创建列
cell = row.createCell((short) i);
// 定义单元格为字符串类型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
// 在单元格中输入一些内容
cell.setCellValue(list.get(i).toString());
// 应用格式
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
//cell.setCellValue("标题");
}
}
/**
* 导出到excel表中
* @param outputFile
* @param workbook
*/
public void exportExcel(String outputFile,String[] tableHeader,List list){
// 创建新的Excel工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();//创建默认的sheet
this.createTableHeader(sheet, tableHeader);
this.createTableRow(sheet, tableHeader, list);
// for(int i=0;i<list.size();i++){
// this.createTalbeRow2(sheet, list, i+1);
// }
System.out.println("文件正在生成......");
try{
// 新建输出文件流
FileOutputStream fOut = new FileOutputStream(outputFile);
// 把相应的Excel工作薄存盘
workbook.write(fOut);
fOut.flush();
// 操作结束,关闭文件
fOut.close();
} catch (Exception e) {
System.out.println("已运行CreateXLS();" + e);
}
System.out.println("文件已生成......");
}
/**
* 写入到excel中
* @param outputFile 输出保存的文件名,包括路径
* @param tableHeaderk 每一列的名称,即第一行
* @param list 每行的数据
*/
public void writeToExcel(String outputFile,String[] tableHeaderk,List list){
try {
// 创建新的Excel工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
// 在Excel工作薄中建一工作表,其名为缺省值
// 如要新建一名为“效益指标”的工作表,其语句为:
// HSSFSheet sheet = workbook.createSheet("效益指标");//用来创建指定的sheet
HSSFSheet sheet = workbook.createSheet();//创建默认的sheet
HSSFHeader header=sheet.getHeader();
header.setCenter("世界五百强企业名次表");
// 在索引0的位置创建行(最顶端的行)
HSSFRow row = null;
// 在索引0的位置创建单元格(左上端)
HSSFCell cell=null;
// 创建字体,设置其为红色、粗体
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 创建格式
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFont(font);
//创建的第一行,标题
row=sheet.createRow((short)0);
for(int i=0;i<tableHeaderk.length;i++){//创建列
cell = row.createCell((short) i);
// 定义单元格为字符串类型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
// 在单元格中输入一些内容
cell.setCellValue(tableHeaderk[i]);
// 应用格式
cell.setCellStyle(cellStyle);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
//cell.setCellValue("标题");
}
for(int j=1;j<list.size()+1;j++){//创建行
row=sheet.createRow((short)j);
for(int i=0;i<tableHeaderk.length;i++){//创建列
cell = row.createCell((short) i);
// 定义单元格为字符串类型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
// 在单元格中输入一些内容
cell.setCellValue(list.get(j-1).toString());
// 应用格式
cell.setCellStyle(cellStyle);
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("已运行CreateXLS();" + e);
}
}
public static void main(String[] args) {
String[] tableHeader={ "企业中文名","所属国家"};
String outputFile = "c:/test.xls";
List list=new ArrayList();
list.add("one");
list.add("two");
list.add("three");
CreateXLS create=new CreateXLS();
// create.writeToExcel(outputFile,tableHeader,list);
create.exportExcel(outputFile, tableHeader, list);
}
}
读取excel代码
package cn.excel;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
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;
/**
* yicha
* Jun 17, 2008
*/
public class ReadinXLS {
/**
* 读取xls数据
* @return
* @throws FileNotFoundException
* @throws IOException
*/
public String getData(String fileToBeRead) throws FileNotFoundException, IOException{
/** Excel文件存放位置。注意是正斜线 */
// String fileToBeRead = "c:/test.xls";
// 创建对Excel工作薄文件的引用
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
// 创建对工作表的引用
// 本例是按名引用,(让我们假定那张表有着缺省名"Sheet1")
// HSSFSheet sheet = workbook.getSheet("效益指标");
// HSSFSheet sheet=workbook.getSheetAt(0);
// 也可用getSheetAt(int index)按索引引用
// 在Excel文档中,第一张工作表的缺省索引是0
// 其语句为:HSSFSheet sheet=workbook.getSheetAt(0);
int currSheet=0;// 在Excel文档中,第一张工作表的缺省索引是0
return this.readLine(workbook, currSheet);
}
/**
* 获取一个excel的数据
* @param workbook
* @param currSheet
* @return
*/
public String readLine(HSSFWorkbook workbook,int currSheet){
StringBuffer result=new StringBuffer();
String EXCEL_LINE_DELIMITER=";";
// 根据currSheet值获得当前的sheet
HSSFSheet sheet = workbook.getSheetAt(currSheet);
// HSSFCell cell=null;
// HSSFRow rowline = null;
int rowCount=sheet.getLastRowNum()+1;//获取行数,是从零开始计算的,因此要+1
for(int i=0;i<rowCount;i++){
result.append(this.getLine(sheet, i)).append(EXCEL_LINE_DELIMITER);
}
// System.out.println(rowCount);
return result.toString();
}
/**
* 获取某一行的数据
* @param sheet
* @param row 某一行
* @return
*/
public String getLine(HSSFSheet sheet,int row){
String EXCEL_LINE_DELIMITER=",";
StringBuffer result = new StringBuffer();
// 根据行数取得Sheet的一行
HSSFRow rowline = sheet.getRow(row);//某行
HSSFCell cell=null;
int cellCount=rowline.getLastCellNum()+1;//获取某行的列数,是从零开始计算的,因此要+1
for(int i=0;i<cellCount;i++){
cell=rowline.getCell((short)i);
// System.out.println(cell.getStringCellValue());
result.append(cell.getStringCellValue()).append(EXCEL_LINE_DELIMITER);
}
return result.toString();
}
public static void main(String[] args) throws FileNotFoundException, IOException {
ReadinXLS read=new ReadinXLS();
/** Excel文件存放位置。注意是正斜线 */
String fileToBeRead = "c:/test.xls";
System.out.println(read.getData(fileToBeRead));
}
}