文中处理的excel是2003年以前的版本,使用HSSFworkbook,如果处理2007版本以后的excel,用XSSFworkbook,对于二者的兼容性问题,可参考

http://blog.csdn.net/mmm333zzz/article/details/7962377

poi组件中常用的类有HSSFworkbook表示一个完整的excel表格,HSSFsheet表示excel中的一个工作薄,HSSFRow表示工作薄中的一行,HSSFCell表示一个单元格

下面是一个简单的写入的demo

public static void main(String [] args){
try {
HSSFWorkbook workbook= new HSSFWorkbook();
HSSFSheet sheet= workbook.createSheet("test");
HSSFRow row = sheet.createRow(1);
HSSFCell cell= row.createCell(2);
cell.setCellValue("test");
FileOutputStream os= null;
os = new FileOutputStream("fisrtExcel.xls");
workbook.write(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("ok");
}

下面是一个简单的读取demo

try {
FileInputStream file= new FileInputStream("fisrtExcel.xls");
POIFSFileSystem ts= new POIFSFileSystem(file);
HSSFWorkbook wb=new HSSFWorkbook(ts);
HSSFSheet sh= wb.getSheetAt(0);
HSSFRow ro=null;
for (int i = 0; sh.getRow(i)!=null; i++) {
ro=sh.getRow(i);
for (int j = 0; ro.getCell(j)!=null; j++) {
System.out.print(ro.getCell(j)+"");
}
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("ok");

下面是几个常用的api

//使用公式
cell2.setCellFormula("B2");
//设置列宽
sheet.setColumnWidth(columnIndex, width);
//设置行高
row.setHeight(height);
//设这样式:
HSSFFont font= workbook.createFont();
font.setFontHeightInPoints(height);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontName("黑体");
HSSFCellStyle style= workbook.createCellStyle();
style.setFont(font);
//style可以设置对齐样式,边框,和格式化日期。
cell.setCellStyle(style);
//合并单元格
sheet.addMergedRegion(region);

我们之前提到了一个jxl的使用。当时在网上也找到了一个使用的demo,可以参考这里:

public static void main(String [] args){
try {
WritableWorkbook wwb = null;
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File("jxlexcel"));
if(wwb!=null){
//创建一个可写入的工作表
WritableSheet ws = wwb.createSheet("sheet1", 0);
for(inti=0;i<10;i++){
for(intj=0;j<5;j++){
Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
ws.addCell(labelC);
}
}
wwb.write();
wwb.close();
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("ok");
}

对于更复杂的内容这里有几个参考文档:

http://www.newxing.com/Tech/Java/Web/Excel_186.html

http://www.yesky.com/18/1886018.shtml

总结一下,poi的使用比较简单,主要是写入和读取的时候计算好读取的位置。而且现在项目中已经封装了一个现成的类,几乎几行代码就可以把结果输出到一个excel中并提供下载

最新文章

  1. WARN util.NativeCodeLoader: Unable to load native-hadooplibrary for your platform… using builtin-java classes where applicable
  2. MySQL5.7中新增的JSON类型的使用方法
  3. 【转】WebKit 与 V8 的关系
  4. 体验应用程序在Mac/iPhone/iPad之间的Handoff
  5. JS,CSS,HTML制作网页首页,视频轮播,隐藏点击等等。
  6. 数据库SQL CRUD
  7. 请求在Struts2框架中的处理步骤
  8. iOS runtime 运行时( 二 )
  9. windows下qtcreator添加ICE库文件
  10. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-&gt;WinForm版本重构岗位授权管理界面更规范、高效与美观
  11. 『扩展欧几里得算法 Extended Euclid』
  12. Solve Error: node postinstall sh: node: command not found
  13. 反射demo(拷贝一个对象)
  14. 比原链Bytom错误码一览
  15. centos7 tar.xz格式文件的解压方法
  16. as 插件GsonFormat用法(json字符串快速生成javabean)
  17. mysql将某数据库的全部权限赋给某用户,提示1044错误Access denied
  18. sql中 substring和charindex 的用法
  19. Caused by: Unable to load configuration. - action - file:/C:/apache-tomcat-7.0.70/webapps/Structs/WEB-INF/classes/struts.xml:7:72 at com.opensymphony.xwork2.config.ConfigurationManager.getConfigurati
  20. CMMI5级——原因分析及解决方案(Causal Analysis and Resolution)

热门文章

  1. Visio 2007中进行数据库建模时如何显示字段类型以及概念名称
  2. TCP、UDP协议间的区别(转)
  3. &#39;autocomplete=&quot;off&quot;&#39;在Chrome 中不起作用
  4. nerual style 执行命令
  5. TCP协议学习记录 (三) Ping程序 RR选项 记录路由hop
  6. [问题记录.dotnet]取网卡信息报错&quot;找不到&quot;-WMI - Not found
  7. SQL 统计整个服务器上各个数据库占用的空间
  8. 图的割点 | | jzoj【P1230】 | | gdoi | |备用交换机
  9. 20151207Study
  10. [Linux] mail 命令,进入邮箱及删除邮件