import java.awt.List;
import java.io.*;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import jxl.Cell;
import jxl.CellType;
import jxl.DateCell;
import jxl.LabelCell;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class Test7 {
public static void main(String args[]) throws BiffException, IOException {
int C;
ArrayList<ArrayList<String>> dd = new ArrayList<ArrayList<String>>();
for(int i=1;i<=20;i++){
DateRandomTest bb = new DateRandomTest();
Date randomDate = bb.randomDate("2009-01-01", "2012-08-31");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
ArrayList<ArrayList<String>> aa = readExcel("d:/lwg/Mzhi/joint-hardware-inventory-service-request-"+sdf.format(randomDate)+".xls");
dd.addAll(aa);
}
C=(int) (Math.random()*100);
writeExcel("d:/xls/aa"+ +C +".xls", dd);
}
/**把数组内容写到Excel文件,写到本地文件中
* @param data 包含行列的数组
* @return 字节数组
* @author yaofuyuan
* @createTime 2012-04-28 16:00
*/
public static void writeExcel(String filname,ArrayList<ArrayList<String>> data){
WritableWorkbook wwb = null;
try {
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb =Workbook.createWorkbook(new File(filname));
} catch (IOException e) {
e.printStackTrace();
}
if(wwb!=null){
//创建一个可写入的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("sheet1", 0);
//下面开始添加单元格
for(int i=0,rowLen=data.size();i<rowLen;i++){
ArrayList<String> row=data.get(i);
for(int j=0,colLen=row.size();j<colLen;j++){
//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelC = new Label(j, i, row.get(j));
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();
}
}
}
private static Object row(String string) {
// TODO Auto-generated method stub
return null;
}
/*
*//**生成一个Excel文件
* @param fileName 要生成的Excel文件名
*//*
public static void writeExcel1(String fileName,String filele){
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(String file){
StringBuffer sb = new StringBuffer();
Workbook wb = null;
try {
//构造Workbook(工作薄)对象
wb=Workbook.getWorkbook(new File(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();
}
*/
/**读取Excel文件的内容
* @param file 待读取的文件
* @return ArrayList<ArrayList<String>> 包括excel里的第一个工作簿的所有行列
* @author yaofuyuan
* @createTime 2012-04-28 16:00
*/
public static ArrayList<ArrayList<String>> readExcel(String fileName){
ArrayList<ArrayList<String>> data=new ArrayList<ArrayList<String>>();
Workbook wb = null;
try {
//构造Workbook(工作薄)对象
wb=Workbook.getWorkbook(new File(fileName));
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if(wb==null)
return data;
//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
Sheet[] sheet = wb.getSheets();
if(sheet!=null&&sheet.length>0){
Sheet sheet0=sheet[0];
//得到当前工作表的行数
int rowNum = sheet0.getRows();
for(int i=0;i<rowNum;i++){
//得到当前行的所有单元格
Cell[] cells = sheet0.getRow(i);
ArrayList<String> row=new ArrayList<String>();
if(cells!=null&&cells.length>0){
int cellNum=cells.length;
//对每个单元格进行循环
for(int j=0;j< cellNum;j++){
//读取当前单元格的值
Cell c=cells[j];
String cellValue = cells[j].getContents();
if(!cellValue.trim().equals("7979")){
// Interger.valueOf(value.trim)==7979
if(c.getType() == CellType.LABEL)
{
LabelCell labelc00 = (LabelCell)c;
cellValue = labelc00.getString();
}else
if(c.getType() == CellType.NUMBER)
{
NumberCell numc10 = (NumberCell)c;
cellValue = getFormatNumber(numc10.getValue());
}else
if(c.getType() == CellType.DATE)
{
DateCell datec11 = (DateCell)c;
cellValue = getFormatTime(datec11.getDate());
}
row.add(cellValue);
}
}
}
data.add(row);
}
}
//最后关闭资源,释放内存
wb.close();
return data;
}
public static String getFormatNumber(double n) {
DecimalFormat df = new DecimalFormat("#.##########");
return df.format(n);
}
public static String getFormatTime(Date logtime) {
if (null == logtime) {
logtime = new Date();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = "";
try {
time = sdf.format(logtime);
} catch (Exception e) {
e.printStackTrace();
}
return time;
}
public class Excel {
public Excel() {
}
public void CreateWorkbook(File file, double[] a) {
try {
if (!file.exists()) { //判断文件是否已存在,如果没有存在则创建新文件
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new
File("result.xls"+1));
jxl.write.WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
int i = 0;
ws.setColumnView(0, 20); //设置列宽
jxl.write.NumberFormat nf = new jxl.write.NumberFormat(
"0.0000000000000000"); //定义数值格式
WritableCellFormat wcfN = new WritableCellFormat(nf);
String str2 = "第" + 1 + "次试验";
Label label = new Label(0, 0, str2);
ws.addCell(label);
while (i < a.length) {
jxl.write.Number num = new jxl.write.Number(0, i + 1,
a[i], wcfN);
ws.addCell(num);
i++;
}
//写入Exel工作表
wwb.write();
//关闭Excel工作薄对象
wwb.close();
} else {
Workbook rwb = Workbook.getWorkbook(file);
File tempfile = new File(System.getProperty("user.dir") +
"\\tempfile.xls");
WritableWorkbook wwb = Workbook.createWorkbook(tempfile, rwb);
WritableSheet ws = wwb.getSheet(0);
int num = rwb.getSheet(0).getColumns();
int num1 = num + 1;
ws.setColumnView(num, 20); //设置列宽
String str2 = "第" + num1 + "次试验"; //添加列名
Label label = new Label(num, 0, str2);
ws.addCell(label);
int i = 0;
jxl.write.NumberFormat nf = new jxl.write.NumberFormat(
"0.000000000000000"); //定义数值格式
WritableCellFormat wcfN = new WritableCellFormat(nf);
while (i < a.length) {
jxl.write.Number number = new jxl.write.Number(num,
i + 1,
a[i], wcfN);
ws.addCell(number);
i++;
}
wwb.write();
wwb.close();
rwb.close();
String filename = file.getPath();
System.out.println("filename:" + filename);
file.delete();
tempfile.renameTo(file);
System.out.println("tempfile:" + tempfile.getPath());
System.out.println(tempfile.exists());
System.out.println(file.exists());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
excel 操作
最新推荐文章于 2023-12-26 11:29:20 发布