设为首页 收藏本站
查看: 443|回复: 0

[经验分享] Apache poi 导出excel实例

[复制链接]

尚未签到

发表于 2017-1-1 11:29:40 | 显示全部楼层 |阅读模式
以前用过导出excel使用的是jxl.jar,但是目前最高版本只支持excel2003,并不支持excel2007。所以poi支持excel2007,当然也支持excel2003以下各种版本。好了话不多说了,看例子:
excel2003我就不多说了,其实jxl就能很好的进行支持,我在这里说一下excel2007.

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFColor;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public static void main(String[] args) throws Exception {
//输出流
OutputStream os = new FileOutputStream("D:/1.xlsx"); //要保存的excel文件
//工作区
XSSFWorkbook wb = new XSSFWorkbook();
//标题样式
XSSFCellStyle btStyle = wb.createCellStyle();//新建样式对象  
XSSFFont btFont = wb.createFont();//创建字体对象  
btFont.setFontName("宋体"); //字体
btFont.setBold(true);//是否加粗
btFont.setFontHeightInPoints((short) 15);//字体大小
btStyle.setFont(btFont);  
btStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);//水平居中
btStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);//垂直居中
//卷次样式
XSSFCellStyle juanciStyle = wb.createCellStyle();//新建样式对象  
XSSFFont juanciFont = wb.createFont();//创建字体对象  
juanciFont.setFontName("宋体"); //字体
juanciFont.setBold(true);//是否加粗
juanciFont.setFontHeightInPoints((short) 13);//字体大小
juanciFont.setColor(new XSSFColor(ColourUtil.getHexToRGB("#7030A0")));//字体颜色
juanciStyle.setFont(juanciFont);  
//卷样式
XSSFCellStyle juanStyle = wb.createCellStyle();//新建样式对象  
XSSFFont juanFont = wb.createFont();//创建字体对象  
juanFont.setFontName("宋体"); //字体
juanFont.setBold(true);//是否加粗
juanFont.setFontHeightInPoints((short) 12);//字体大小
juanFont.setColor(new XSSFColor(ColourUtil.getHexToRGB("#008000")));//字体颜色
juanStyle.setFont(juanFont);  
//篇样式
XSSFCellStyle pianStyle = wb.createCellStyle();//新建样式对象  
XSSFFont pianFont = wb.createFont();//创建字体对象  
pianFont.setFontName("宋体"); //字体
pianFont.setBold(true);//是否加粗
pianFont.setFontHeightInPoints((short) 11);//字体大小
pianFont.setColor(new XSSFColor(ColourUtil.getHexToRGB("#92D050")));//字体颜色
pianStyle.setFont(pianFont);  
//章样式
XSSFCellStyle zhangStyle = wb.createCellStyle();//新建样式对象  
XSSFFont zhangFont = wb.createFont();//创建字体对象  
zhangFont.setFontName("宋体"); //字体
zhangFont.setBold(true);//是否加粗
zhangFont.setFontHeightInPoints((short) 10);//字体大小
zhangFont.setColor(new XSSFColor(ColourUtil.getHexToRGB("#0000FF")));//字体颜色
zhangStyle.setFont(zhangFont);  
//节样式
XSSFCellStyle jieStyle = wb.createCellStyle();//新建样式对象  
XSSFFont jieFont = wb.createFont();//创建字体对象  
jieFont.setFontName("宋体"); //字体
jieFont.setBold(true);//是否加粗
jieFont.setFontHeightInPoints((short) 9);//字体大小
jieFont.setColor(new XSSFColor(ColourUtil.getHexToRGB("#66FFFF")));//字体颜色
jieStyle.setFont(jieFont);  
//小节样式
XSSFCellStyle xiaojieStyle = wb.createCellStyle();//新建样式对象  
XSSFFont xiaojieFont = wb.createFont();//创建字体对象  
xiaojieFont.setFontName("宋体"); //字体
xiaojieFont.setBold(true);//是否加粗
xiaojieFont.setFontHeightInPoints((short) 8);//字体大小
xiaojieFont.setColor(new XSSFColor(ColourUtil.getHexToRGB("#C2AFEB")));//字体颜色
xiaojieStyle.setFont(xiaojieFont);  
//校注样式
XSSFCellStyle jiaoazhuStyle = wb.createCellStyle();//新建样式对象  
XSSFFont jiaozhuFont = wb.createFont();//创建字体对象  
jiaozhuFont.setFontName("宋体"); //字体
jiaozhuFont.setBold(true);//是否加粗
jiaozhuFont.setFontHeightInPoints((short) 8);//字体大小
jiaozhuFont.setColor(new XSSFColor(ColourUtil.getHexToRGB("#0000FF")));//字体颜色
jiaoazhuStyle.setFont(jiaozhuFont);  
String[] title = {"史籍语料","ID","唯一标示符号","标题级别","新增条目名","显示标题","主题词","分类"};
//创建第一个sheet
XSSFSheet sheet= wb.createSheet("内容结构");//创建一个工作簿,并起个名字
//生成第一行

XSSFRow row = sheet.createRow(0);
for(int i=0;i<title.length;i++){
Cell cell=row.createCell(i);//取得一行当中的列
cell.setCellValue(title);//设置内容
cell.setCellStyle(btStyle);//设置样式
sheet.setColumnWidth(i, 30*256); // 设置列的宽度
}
//写文件
wb.write(os);
//关闭输出流
os.close();
}
 
读取excel2007,用poi实现也和简单,看例子:

import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public static void main(String[] args) throws Exception {
//office2007工作区
XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream("D:/1.xlsx"));
//获得该工作区的第一个sheet
XSSFSheet sheet = wb.getSheetAt(0);
//总共有多少行,从0开始
int totalRows = sheet.getLastRowNum();
for (int i = 0; i <= totalRows; i++) {
//取得该行
XSSFRow row = sheet.getRow(i);
System.out.println(row.getCell(0).toString());//读取该行的第几列,当前是读取该行的地0列。也就是第几个单元格,从0开始
}
}
 值得注意的是,XSSFWorkbook支持excel2007,而HSSFWorkbook支持excel2003。这两个类分别支持的。
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-322414-1-1.html 上篇帖子: Apache common pool 用法 下篇帖子: Apache的缓存设置方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表