欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

通过jxl.jar 读取、导出excel的实例代码

程序员文章站 2023-11-21 11:34:58
复制代码 代码如下: package export.excel; import java.io.bufferedinputstream;import java....

复制代码 代码如下:

 package export.excel;

import java.io.bufferedinputstream;
import java.io.bufferedoutputstream;
import java.io.file;
import java.io.fileinputstream;
import java.io.fileoutputstream;
import java.io.outputstream;
import java.util.arraylist;
import java.util.list;
import java.util.random;

import jxl.cell;
import jxl.sheet;
import jxl.workbook;
import jxl.format.alignment;
import jxl.format.verticalalignment;
import jxl.write.label;
import jxl.write.writablecellformat;
import jxl.write.writablesheet;
import jxl.write.writableworkbook;
import export.vo.personvo;

/**导出excel文件
 *
 * @author 路人甲
 *
 */
public class exportexcel {

 
 public list<personvo> personvolist;

 public exportexcel()
 {
  initdata();
 }

 /**
  * 初始化数据
  */
 public void initdata()
 {
  // 随机函数
  random random = new random();
  personvolist = new arraylist<personvo>();
  // 初始化100个人进集合
  personvo personvo = null;
  for (int i = 0; i < 100; i++)
  {
   personvo = new personvo();
   personvo.setid("" + i);
   personvo.setname("路人" + i);
   if (i%2==0)
   {
    personvo.setsex("男");
   }
   else
   {
    personvo.setsex("女");
   }
   // 取100岁以内的随机年龄
   personvo.setage("" + random.nextint(100));
   personvolist.add(personvo);
  }
 }

 /**导出数据以excel格式导出
  * exportname 导出文件名称
  * @param exportname
  */
 public void exportperson(string exportname)
 {
  try{
   file excelfile = new file(exportname + "temp.xls");
   // 文件格式
   writablecellformat format = new writablecellformat();
   // x  靠左
   format.setalignment(alignment.right);
   // y 靠顶
   format.setverticalalignment(verticalalignment.top);

   // 创建一个工作文件
   writableworkbook writableworkbook = workbook.createworkbook(excelfile);
   // 创建一个工作簿
   writablesheet sheet1 = writableworkbook.createsheet("个人信息列表", 0);
   //创建行数 设置行的宽度
   sheet1.setcolumnview(0, 10);
   sheet1.setcolumnview(1, 10);
   sheet1.setcolumnview(2, 10);
   sheet1.setcolumnview(3, 10);
   // 设置行的值
   sheet1.addcell(new label(0, 0, "id", format));
   sheet1.addcell(new label(1, 0, "姓名", format));
   sheet1.addcell(new label(2, 0, "性别", format));
   sheet1.addcell(new label(3, 0, "年龄", format));

   // 把集合写入到excel中
   int rownum = 1;
   for (personvo bean : personvolist)
   {
    int colspannum = 0;
    sheet1.addcell(new label(colspannum, rownum, bean.getid(), format));
    sheet1.addcell(new label(colspannum++, rownum, bean.getname(), format));
    sheet1.addcell(new label(colspannum++, rownum, bean.getsex(), format));
    sheet1.addcell(new label(colspannum++, rownum, bean.getage(), format));

    rownum++;
   }

   writableworkbook.write();
   writableworkbook.close();
//   如果是在网络下载的,那么就写这些
//            super.gethttpservletresponse().setcontenttype("application/x-msdownload");
//            string encodetittle = new string(excelname.getbytes("gbk"), "iso-8859-1");
//            super.gethttpservletresponse().addheader("content-disposition","attachment;filename="+encodetittle+".xls");
            fileinputstream finput = new fileinputstream(excelfile);
//            outputstream output = super.gethttpservletresponse().getoutputstream();
            file fout = new file(exportname + ".xls");
            outputstream output = new fileoutputstream(fout);
            bufferedinputstream buffin = new bufferedinputstream(finput);
            bufferedoutputstream buffout = new bufferedoutputstream(output);
            byte[] buffer = new byte[4096];
            int count = 0;
            while ((count = buffin.read(buffer, 0, buffer.length)) > 0) {
                buffout.write(buffer, 0, count);
            }
            buffin.close();
            buffout.close();
            finput.close();
            output.close();
            excelfile.delete();
  }
  catch (exception e) {
   e.printstacktrace();
  }
  finally
  {
   system.out.println("完成导出操作");
  }

 }

 /**导入数据以excel格式导出
  *
  * @param importexcel 导入excel文件名称
  */
 public void importperson(string importexcel)
 {
  try{
   file excelfile = new file(importexcel+".xls");
   // 创建一个工作文件
   workbook workbook = workbook.getworkbook(excelfile);
   // 获得第一个工作簿 这里有两种方法获取sheet表,1为名字,而为下标,从0开始
   sheet sheet = workbook.getsheet(0);
   // 总记录数
   int allrow = sheet.getrows();
   int allcolspan = sheet.getcolumns();
   system.out.println(allrow);
   system.out.println(allcolspan);
   // 取数据
   for (int i=0; i<allrow; i++)
   {
    // 取出每一列的值
    for (int j=0; j<allcolspan; j++)
    {
//     sheet.getcell(列数, 行数);
     cell cell = sheet.getcell(j, i);
     // 打印出该列的值
     system.out.print(cell.getcontents() + "\t");
    }
    system.out.println();
   }
   //关闭
   workbook.close();
  }catch (exception e) {
   e.printstacktrace();
  }
  finally
  {
   system.out.println("完成导入操作");
  }
 }


 /**
  * @param args
  */
 public static void main(string[] args) {

  exportexcel exportexcel = new exportexcel();
  // 设置路径
  string srcpath = "c:/quarantine/personvo";
//  导出
//  exportexcel.exportperson(srcpath);
  // 读取
  exportexcel.importperson(srcpath);
 }

}