import java.io.F ileOu tputS tream;
imp ort o rg.ap ache.poi.h ssf.u sermo del.H SSFCe ll;
i mport org.apach e.poi.hssf.user model.HSSF CellS tyle;
impo rt or g.apa che.p oi.hs sf.us ermod el.HS SFFon t;
im portorg.a pache.poi.hssf.userm odel.HSSFR ichTe xtStr ing;
impor t org.apac he.po i.hss f.use rmode l.HSS FRow;
impo rt or g.apa che.p oi.hs sf.us ermod el.HS SFShe et;
i mport org.apach e.poi.hssf.user model.HSSF Workb ook;
impor t org.apac he.po i.hss f.uti l.HSS FColo r;
/**
*
* @au thorhades lee
*/
pub lic c lassTest2{
/**Creat es anew i nstan ce of Test2 */
p ublic Test2() {
}
pub lic s tatic void main(Stri ng[]args)throw s Exc eptio n {
//声明一个工作薄
HSSF Workb ook w b=new HSSF Workb ook();
//生成一个表格
HS SFShe et sh eet=e ateSh eet("表格1");
//生成一个列
HSS FRowrow=s heet.creat eRow(0);
//生成一个样式
HSSFC ellSt yle s tyle=wb.cr eateC ellSt yle();
//设置这些样式
st yle.s etFil lFore groun dColo r(HSS FColo r.SKY_BLUE.inde x); st yle.s etFil lPatt ern(H SSFCe llSty le.SO LID_F OREGR OUND); styl e.set Borde rBott om(HS SFCel lStyl e.BOR DER_T HIN);
style.setB order Left(HSSFC ellSt yle.B ORDER_THIN);
sty le.se tBord erRig ht(HS SFCel lStyl e.BOR DER_T HIN);
style.setB order Top(H SSFCe llSty le.BO RDER_THIN);
styl e.set Align ment(HSSFC ellSt yle.A LIGN_CENTE R);
//生成一个字体
HSSFF ont f ont=e ateFo nt();
font.setCo lor(H SSFCo lor.V IOLET.inde x);
fo nt.se tFont Heigh tInPo ints((shor t)16);
font.setB oldwe ight(HSSFF ont.B OLDWE IGHT_BOLD);
//把字体应用到当前的样式
st yle.s etFon t(fon t);
//填充单元格
fo r(sho rt i=0;i<5;i++){
//声明一个单元格
HSS FCell cell=row.creat eCell(i);
//设置单元格的字符值
cel l.set CellV alue(new H SSFRi chTex tStri ng("第"+i+"列"));
//设置单元格的样式
cel l.set CellS tyle(style);
}
Fi leOut putSt reamfout=new F ileOu tputS tream("我的第一个EXC EL.xl s");
//输出到文件
wb.wr ite(f out);
fout.close();
}
}
pub lic s tatic void main(Stri ng[]args) {
try{
HSSFW orkbo ok wb = ne w HSS FWork book();
HSSF Sheet shee t = e ateSh eet();
HSSFR ow ro w = s heet.creat eRow(0);
row.setH eight((sho rt) 25);//目的是想把行高设置成25px
Fi leOut putSt reamfileO ut =new F ileOu tputS tream("c:\\a.xl s");
wb.writ e(fil eOut);
fileO ut.cl ose();
}
catc h (Ex cepti on e) {
e.pr intSt ackTr ace();
}
}
打开a.xls发现结果不是我想要的,第一行的高度都没有,没有报错说明代码有问题,为什么回没有高度呢?是不是单位不一样呢?我把ro w.set Heigh t((sh ort)25);改成了row.setH eight((sho rt) 250);结果发现第一行出来了,但是这是怎么一个换算关系呢?我查看了一下导出的Ex cel第一行高是16像素,换算一下得
出r ow.se tHeig ht((s hort) 15.625);表示行高为一个像素,那么想设成几个像素就好做了。比如
row.setHe ight((shor t) (15.625*n));//n为行高的像素数。
其实在API中还有一个HS SFRow对象还有一个设置行高的函
数s etHei ghtIn Point s(flo at he ight);这个函数中参数就是行高的像素数,比se tHeig ht函数要方便多了。
行高设置完成了,接下来设置列宽
设置手机主题字体样式的软件 pub lic s tatic void main(Stri ng[]args) {
try{
HSSFW orkbo ok wb = ne w HSS FWork book();
HSSF Sheet shee t = e ateSh eet();
HSSFR ow ro w = s heet.creat eRow(0);
row.setH eight((sho rt) 250);
sh eet.s etCol umnWi dth((short) 0,(shor t) 250);
Fil eOutp utStr eam f ileOu t = n ew Fi leOut putSt ream("c:\\a.xls");
wb.write(file Out);
f ileOu t.clo se();
}
catch (Exc eptio n e){
e.pri ntSta ckTra ce();
}
}
接下来说说s heet.setCo lumnW idth((shor t) 0, (sho rt) 250);
第一个参数表示要为第几列设置,第二个参数表示列的宽度,看看上面的代码按说第一行第一列的单元格形状应该是个正方形,因为宽和高都是250,但是打开导出后的Excel发现宽度没有高度大,是个长方形,查看该列的宽度仅为7个像素,看来行高和列宽的单位是不一样的,同样换一算shee t.set Colum nWidt h((sh ort)0, (s hort) (35.7));表示高度为一个像素,同样设置列宽的像素为s heet.setCo lumnW idth((shor t) 0, (sho rt) (35.7*n));//n为列高的像素数。
publi c cla ss Me rgedC ells{
pub lic s tatic void main(Stri ng[]args) thro ws IO Excep tion{
HSSF Workb ook w b = n ew HS SFWor kbook();
HS SFShe et sh eet = wb.c reate Sheet("new shee t");
HSSFR ow ro w = s heet.creat eRow((shor t) 1);
HSSF Cellcell= row.crea teCel l((sh ort)1);
ce ll.se tCell Value("Thi s isa tes t ofmergi ng");
shee t.add Merge dRegi on(ne w Reg ion(1, (sh ort)1, 1, (sho rt) 2));
// Wri te th e out put t o a f ile
Fi leOut putSt reamfileO ut =new F ileOu tputS tream("wor kbook.xls");
wb.write(file Out);
fileO ut.cl ose();
}
}
p ublic clas s Wor kingW ithFo nts {
publ ic st aticvoidmain(Strin g[] a rgs)throw s IOE xcept ion {
HSSFW orkbo ok wb = ne w HSS FWork book();
HSS FShee t she et =wb.cr eateS heet("newsheet");
// Cre ate a rowand p ut so me ce lls i n it. Rows are0 bas ed.
HS SFRow row= she et.cr eateR ow((s hort) 1);
// Cr eatea new font andalter it.
H SSFFo nt fo nt =wb.cr eateF ont();
font.setF ontHe ightI nPoin ts((s hort) 24);
font.setFo ntNam e("Co urier New");
fon t.set Itali c(tru e);
fo nt.se tStri keout(true);
// Font s are setintoa sty le so crea te anew o ne to use.
HSSFC ellSt yle s tyle= wb.creat eCell Style();
st yle.s etFon t(fon t);
// Cre ate a cell andput a valu e init.
HS SFCel l cel l = r ow.cr eateC ell((short) 1);
cell.setCe llVal ue("T his i s a t est o f fon ts");
cell.setCe llSty le(st yle);
// W ritethe o utput to a file
FileO utput Strea m fil eOut= new File Outpu tStre am("w orkbo ok.xl s");w b.wri te(fi leOut);
fil eOut.close();
}
}
HSS FRowrow = shee t2.cr eateR ow(2);
row.setHe ightI nPoin ts(240);
sh eet2.setCo lumnW idth((shor t) 2, (sho rt) 9000);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论