Reader.class
package xlstt;
import java.awt.Label;
import java.io.File;
import java.util.HashMap;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class Reader
{
/**
* @param args
*/
public static void main(String[] args)
{
try {
Workbook book = Workbook.getWorkbook(new File("D:\\aa.xls"));
// 获得第一个工作表对象
Sheet sheet = book.getSheet(0);
// 得到第一列第一行的单元格
// System.out.println(sheet.getColumns());//获得列数
// System.out.println(sheet.getRows());//获得行数
// Cell cell1 = sheet.getCell(0, 0);//获得第一行第一列的cell
// System.out.println(cell1.getContents());//获得cell中的内容
// List<CellBean> lc = new ArrayList<CellBean>();
HashMap<String, String> m = new HashMap<String, String>();
for (int i = 0; i < sheet.getRows(); i++) {
for (int j = 0; j < sheet.getColumns(); j++) {
Cell cell = sheet.getCell(j, i);
m.put(i + "" + j, cell.getContents());
System.out.println("j:" + j + " i:" + i + " cell:"
+ cell.getContents());
}
}
// 打开文件
WritableWorkbook wb = Workbook.createWorkbook(new File(
"D:\\new.xls"));
// 生成名为“Sheet1”的工作表,参数0表示这是第一页
WritableSheet ws = wb.createSheet("Sheet1", 0);
// //在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
// //以及单元格内容为test
// Label label=new Label(0,0,"test");
// //将定义好的单元格添加到工作表中
// ws.addCell(label);
// /*生成一个保存数字的单元格
// 必须使用Number的完整包路径,否则有语法歧义
// 单元格位置是第二列,第一行,值为789.123*/
// jxl.write.Number number = new jxl.write.Number(1,0,789.123);
// ws.addCell(number);
for (int i = 0; i < sheet.getRows(); i++) {
for (int j = 0; j < sheet.getColumns(); j++) {
ws.addCell(new jxl.write.Label(j, i, m.get(i + "" + j)));
}
}
// 写入数据并关闭文件
book.close();
wb.write();
wb.close();
System.out.println("create ok!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
xls.class
package xlstt;
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class xls {
public static void writeExcel(String fileName){
WritableWorkbook wwb = null;
try {
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
}
if(wwb!=null){
//创建一个可写入的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("sheet1", 0);
//下面开始添加单元格
for(int i=0;i<10;i++){
for(int j=0;j<5;j++){
//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
try {
//将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
try {
//从内存中写入文件中
wwb.write();
//关闭资源,释放内存
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
public static String readExcel(File file){
StringBuffer sb = new StringBuffer();
Workbook wb = null;
try {
//构造Workbook(工作薄)对象
wb=Workbook.getWorkbook(file);
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if(wb==null)
return null;
//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
Sheet[] sheet = wb.getSheets();
if(sheet!=null&&sheet.length>0){
//对每个工作表进行循环
for(int i=0;i<sheet.length;i++){
//得到当前工作表的行数
int rowNum = sheet[i].getRows();
for(int j=0;j<rowNum;j++){
//得到当前行的所有单元格
Cell[] cells = sheet[i].getRow(j);
if(cells!=null&&cells.length>0){
//对每个单元格进行循环
for(int k=0;k<cells.length;k++){
//读取当前单元格的值
String cellValue = cells[k].getContents();
sb.append(cellValue+" ");
}
}
sb.append(" ");
}
sb.append(" ");
}
}
//最后关闭资源,释放内存
wb.close();
return sb.toString();
}
}