import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
public class RWExcel {
/**
* @param args
* @throws IOException
* @throws WriteException
*/
public static void main(String[] args) throws WriteException, IOException {
String strc2 = "";
String strc3 = "";
String strc4 = "";
String strc5 = "";
Workbook rwb = null;
Workbook rwb1 = null;
WritableWorkbook book = null;
WritableSheet sheet =null;
try {
System.out.println("开始执行");
InputStream is = new FileInputStream("人员手机号码.xls");
InputStream is1 = new FileInputStream("移动电话导入模板.xls");
// 声名一个工作薄
rwb = Workbook.getWorkbook(is);
rwb1 = Workbook.getWorkbook(is1);
// 获得工作薄的个数
// int number = rwb.getNumberOfSheets();
// 在Excel文档中,第一张工作表的缺省索引是0
Sheet st = rwb.getSheet(0);
Sheet st1 = rwb1.getSheet(0);
// 通用的获取cell值的方式,getCell(int column, int row) 行和列
int rows = st.getRows();
int rows1 = st1.getRows();
book = Workbook.createWorkbook(new File("人员手机号码.xls"),
rwb);
// 添加一个工作表
sheet = book.createSheet(" 第二页 ", 1);
for (int i = 1; i < rows1; i++) {
Cell c2 = st1.getCell(1, i);
strc2 = c2.getContents();// 模板人名
for (int j = 1; j < rows; j++) {
Cell c3 = st.getCell(2, j);
strc3 = c3.getContents();// 人员人名
Cell c4 = st.getCell(3, j);
strc4 = c4.getContents();// 人员号码
if (strc3.equals(strc2)||strc3==strc2) {
sheet.addCell(new Label(3, i, strc4.toString()));
book.write();
System.out.println("执行结束");
}
}
}
book.close();
rwb.close();
rwb1.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println("出错了");
}
}
}
为什么每次只能在“人员手机号码”这个excel中的第二页中插入第一个人的号码,其他就不行了,但我用debug后,发现每次都能write进入,而且数据是对的,请帮忙看下吧
------最佳解决方案--------------------------------------------------------
strc3 == strc2) {
sheet.addCell(new Label(3, 0, "电话号码"));
jxl.write.Number numb = new jxl.write.Number(3, i,
Double.parseDouble(strc4));
sheet.addCell(numb);
book.write();
System.out.println("执行结束");
}
但是效果还是一样,只能读出来一行,但是后台打印的是:
开始执行
执行结束
执行结束
执行结束
执行结束
执行结束
执行结束
操作共用的时间:328毫秒
进入了6次,他应该在excel中插入六个号码的。。。。
请各位帮忙下,
------其他解决方案--------------------------------------------------------
POI 也可以写Excel啊,如果是WEb程序,写Excel,不用那么麻烦,只需要设置响应头就行,用JSP写一个Excel模板
------其他解决方案--------------------------------------------------------