精华内容
下载资源
问答
  • JXL导出EXCEL合并单元格

    千次阅读 2018-01-30 10:07:40
    图片 import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse;...import jxl.CellView; import jxl.Workbook; i

    图片
    这里写图片描述

    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletResponse;
    
    import jxl.CellView;
    import jxl.Workbook;
    import jxl.biff.DisplayFormat;
    import jxl.format.Alignment;
    import jxl.format.Border;
    import jxl.format.BorderLineStyle;
    import jxl.format.VerticalAlignment;
    import jxl.write.Label;
    import jxl.write.NumberFormats;
    import jxl.write.WritableCellFormat;
    import jxl.write.WritableFont;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    
    public final static void buildExcel4(OutputStream outStream,
                String mainTitle, String[] titles, List<String> contents) {
            int beginRow = 0;
            try {
    
                /** **********创建工作簿************ */
                WritableWorkbook workbook = Workbook.createWorkbook(outStream);
    
                /** **********创建工作表************ */
                WritableSheet sheet = workbook.createSheet("sheet", 0);
    
    
                /** **********设置纵横打印(默认为纵打)、打印纸***************** */
                SheetSettings sheetset = sheet.getSettings();
                sheetset.setProtected(false);
    
                /** ************设置单元格字体************** */
                WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);
                WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 10,
                        WritableFont.BOLD);
    
                /** ************以下设置三种单元格样式************ */
                // 用于标题居中
                WritableCellFormat wcf_center = new WritableCellFormat(BoldFont);
                wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
                wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
                wcf_center.setAlignment(Alignment.CENTRE); // 文字水平对齐
                wcf_center.setWrap(false); // 文字是否换行
    
                // 用于正文居左
                WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);
                wcf_left.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
                wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
                wcf_left.setAlignment(Alignment.CENTRE); // 文字水平对齐
                wcf_left.setWrap(false); // 文字是否换行
    
                // excel大标题
                if (mainTitle != null && !mainTitle.equals("")) {
                    sheet.mergeCells(0, 0, titles.length - 1, 0);
                    sheet.addCell(new Label(0, 0, mainTitle, wcf_center));
                    beginRow = beginRow + 1;
                }
    
                /** ***************以下是EXCEL第一行列标题********************* */
                if (titles != null && titles.length > 1) {
                    for (int i = 0; i < titles.length; i++) {
                        sheet.addCell(new Label(i, 1, titles[i], wcf_center));
                    }
                    beginRow = beginRow + 1;
                }
                /** ***************以下是EXCEL正文数据********************* */
                sheet.addCell(new Label(0, 2,  "1", wcf_left));
                sheet.addCell(new Label(1, 2, "创建红包数", wcf_left));
                sheet.addCell(new Label(2, 2, "创建红包数", wcf_left));
                sheet.addCell(new Label(3, 2, "10", wcf_left));
                sheet.addCell(new Label(4, 2, "100", wcf_left));
    
                sheet.addCell(new Label(0, 3, "2", wcf_left));
                sheet.addCell(new Label(1, 3, "收入", wcf_left));
                sheet.addCell(new Label(2, 3, "发放的红包总额", wcf_left));
                sheet.addCell(new Label(3, 3, "10", wcf_left));
                sheet.addCell(new Label(4, 3, "100", wcf_left));
    
    
    
                sheet.addCell(new Label(0, 4, "3", wcf_left));
                sheet.addCell(new Label(1, 4, "收入", wcf_left));
                sheet.addCell(new Label(2, 4, "小计", wcf_left));
                sheet.addCell(new Label(3, 4, "10", wcf_left));
                sheet.addCell(new Label(4, 4, "100", wcf_left));
    
                //合并单元格               
                sheet.mergeCells(1, 3, 1, 4);                 
    
                sheet.addCell(new Label(0, 5, "4", wcf_left));
                sheet.addCell(new Label(1, 5, "支出", wcf_left));
                sheet.addCell(new Label(2, 5, "失效红包总额", wcf_left));
                sheet.addCell(new Label(3, 5, "1", wcf_left));
                sheet.addCell(new Label(4, 5, "10", wcf_left));
    
                sheet.addCell(new Label(0, 6, "5", wcf_left));
                sheet.addCell(new Label(1, 6, "支出", wcf_left));
                sheet.addCell(new Label(2, 6, "使用红包总额", wcf_left));
                sheet.addCell(new Label(3, 6, "3", wcf_left));
                sheet.addCell(new Label(4, 6, "30", wcf_left));
    
                sheet.addCell(new Label(0, 7, "6", wcf_left));
                sheet.addCell(new Label(1, 7, "支出", wcf_left));
                sheet.addCell(new Label(2, 7, "小计", wcf_left));
                sheet.addCell(new Label(3, 7, "4", wcf_left));
                sheet.addCell(new Label(4, 7, "40", wcf_left));
    
                //合并单元格                   
                sheet.mergeCells(1, 5, 1, 7);   
    
                sheet.addCell(new Label(0, 8, "7", wcf_left));
                sheet.addCell(new Label(1, 8, "剩余红包数", wcf_left));
                sheet.addCell(new Label(2, 8, "未使用红包总额", wcf_left));
                sheet.addCell(new Label(3, 8, "7", wcf_left));
                sheet.addCell(new Label(4, 8, "70", wcf_left));
    
                sheet.setColumnView(1, 20);
                sheet.setColumnView(2, 20);
                sheet.setColumnView(3, 20);
                sheet.setColumnView(4, 20);
                sheet.setColumnView(5, 20);
    
    
        }
                workbook.write();
                workbook.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    展开全文
  • public void createNoLotteryAlarmExcel(String filePath,...//这里要注意每一行标题要留出要合并的位置,我这里是“” String[] tittles={"序号","整机缺货状态","区域","彩票机号","整机余量","货道一","","货道

     

     

    public void createNoLotteryAlarmExcel(String filePath,String fileName,List<NoLotteryAlarm> alarmLimits) throws Exception{

    //这里要注意每一行标题要留出要合并的位置,我这里是“”
    String[] tittles={"序号","整机缺货状态","区域","彩票机号","整机余量","货道一","","货道二","","货道三","","货道四","","售货机号"};
    String[] tittles2={"","","","","","票种-面额","余量","票种-面额","余量","票种-面额","余量","票种-面额","余量"};
    OutputStream os=null;
    WritableWorkbook ww=null;
    File file=new File(filePath);
    if(!file.exists()){
    file.mkdir();
    }
    os=new FileOutputStream(filePath+fileName);
    ww=Workbook.createWorkbook(os);
    WritableSheet sheet=ww.createSheet(fileName, 0);

    //文字对齐方式
            WritableCellFormat wcf = new WritableCellFormat();  
            wcf.setAlignment(Alignment.CENTRE);//把水平对齐方式指定为居中 
            wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//把垂直对齐方式指定为居中 

    这里大家可以参考我上面导出的结果看看,下面的如何合并单元格的
    //合并单元格
    //WritableSheet.mergeCells(int m,int n,int p,int q);
            //作用是从(m,n)到(p,q)的单元格全部合并[我的理解:m列、n行和p列、q行合并]
    sheet.mergeCells(0, 0, 0, 1);//设置第一列、第一行和 第一列、第二行合并
    sheet.mergeCells(1, 0, 1, 1);
    sheet.mergeCells(2, 0, 2, 1);//这里是标题“区域” 它合并的是第3列第1行和第3列第2行
    sheet.mergeCells(3, 0, 3, 1);
    sheet.mergeCells(4, 0, 4, 1);
    sheet.mergeCells(5, 0, 6, 0);//货道一
    sheet.mergeCells(7, 0, 8, 0);//货道二
    sheet.mergeCells(9, 0, 10,0);//货道三
    sheet.mergeCells(11, 0, 12,0);//货道四
    sheet.mergeCells(13, 0, 13, 1);
    try {//添加第一行标题
    for (int i = 0; i < tittles.length; i++) {
    sheet.addCell(new Label(i, 0, tittles[i],wcf));//i列,1行,title内容,wcf样式
    }//添加第二行标题
    for (int i = 0; i < tittles2.length; i++) {
    sheet.addCell(new Label(i, 1, tittles2[i],wcf));//i列,2行,title内容,wcf样式
    }
    sheet.setColumnView(1, 15);//设置第2列的宽度
    sheet.setColumnView(3, 15);//设置第4列的宽度
    int count=2;
    if(alarmLimits!=null){
    for (int i = 0; i < alarmLimits.size(); i++) {
    NoLotteryAlarm alarmLimit=alarmLimits.get(i);
    sheet.addCell(new Label(0, count, i+1+"",wcf));

    if (StringUtil.isNotEmpty(alarmLimit.getTotal_alerm_content())) {
    Integer str=alarmLimit.getTotal_alerm_content();
    if(str.equals(Constant.NO_LOTTERY_ALERM_JJ)){
    sheet.addCell(new Label(1,count, "紧急缺货",wcf));
    }
    else if(str.equals(Constant.NO_LOTTERY_ALERM_ZY)){
    sheet.addCell(new Label(1,count,"重要缺货",wcf));
    }
    else{
    sheet.addCell(new Label(1,count,"余量充足",wcf));
    }
    }else {
    sheet.addCell(new Label(1,count,"",wcf));
    }
    if(StringUtil.isNotEmpty(alarmLimit.getArea_name())){
    sheet.addCell(new Label(2, count, String.valueOf(alarmLimit.getArea_name()),wcf));
    }else {
    sheet.addCell(new Label(2, count, "",wcf));
    }
    if(StringUtil.isNotEmpty(alarmLimit.getLottery_hard_seq())){
    sheet.addCell(new Label(3, count, alarmLimit.getLottery_hard_seq(),wcf));
    }else {
    sheet.addCell(new Label(3, count, "",wcf));
    }
    sheet.addCell(new Label(4, count, alarmLimit.getTotal_count()+"",wcf));
    String str1="";
    if(alarmLimit.getLottery_name1()!=null)str1+=alarmLimit.getLottery_name1()+"-";
    if(alarmLimit.getLottery_price1()!=null)str1+=alarmLimit.getLottery_price1();
    sheet.addCell(new Label(5, count, str1,wcf));
    sheet.setColumnView(5, 15);//设置第6列的宽度
    if(alarmLimit.getA01_count()!=null)sheet.addCell(new Label(6, count, alarmLimit.getA01_count()+"",wcf));
    else sheet.addCell(new Label(6, count, "",wcf));
    String str2="";
    if(alarmLimit.getLottery_name2()!=null)str2+=alarmLimit.getLottery_name2()+"-";
    if(alarmLimit.getLottery_price2()!=null)str2+=alarmLimit.getLottery_price2();
    sheet.addCell(new Label(7, count, str2,wcf));
    sheet.setColumnView(7, 15);//设置第8列的宽度
    if(alarmLimit.getA02_count()!=null)sheet.addCell(new Label(8, count, alarmLimit.getA02_count()+"",wcf));
    else sheet.addCell(new Label(8, count, "",wcf));
    String str3="";
    if(alarmLimit.getLottery_name3()!=null)str3+=alarmLimit.getLottery_name3()+"-";
    if(alarmLimit.getLottery_price3()!=null)str3+=alarmLimit.getLottery_price3();
    sheet.addCell(new Label(9, count,str3,wcf));
    sheet.setColumnView(9, 15);//设置第10列的宽度
    if(alarmLimit.getA03_count()!=null)sheet.addCell(new Label(10, count, alarmLimit.getA03_count()+"",wcf));
    else sheet.addCell(new Label(10, count, "",wcf));
    String str4="";
    if(alarmLimit.getLottery_name4()!=null)str4+=alarmLimit.getLottery_name4()+"-";
    if(alarmLimit.getLottery_price4()!=null)str4+=alarmLimit.getLottery_price4();
    sheet.addCell(new Label(11, count,str4,wcf));
    sheet.setColumnView(11, 15);//设置第12列的宽度
    if(alarmLimit.getA04_count()!=null)sheet.addCell(new Label(12, count, alarmLimit.getA04_count()+"",wcf));
    else sheet.addCell(new Label(12, count, "",wcf));
    sheet.addCell(new Label(13, count, alarmLimit.getUbox_code(),wcf));
    count++;
    }
    }
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    finally{
    try {
    ww.write();
    ww.close();
    os.flush();
    os.close();
    } catch (Exception e) {
    e.printStackTrace();
    }

    }
    }

    展开全文
  • 导出的结果是,大家看哈,若有可取之处可继续 代码比较多,大家主要看哈我用红色标注部分即可 ----------------------------------------------------------------------------代码分割线--------------------...

    这次能做出来,主要是感谢各位在网上提供的资料,在此记录

    导出的结果是,大家看哈,若有可取之处可继续


    代码比较多,大家主要看哈我用红色标注部分即可

    ----------------------------------------------------------------------------代码分割线-------------------------------------------------

    public void createNoLotteryAlarmExcel(String filePath,String fileName,List<NoLotteryAlarm> alarmLimits) throws Exception{

    //这里要注意每一行标题要留出要合并的位置,我这里是“”
    String[] tittles={"序号","整机缺货状态","区域","彩票机号","整机余量","货道一","","货道二","","货道三","","货道四","","售货机号"};
    String[] tittles2={"","","","","","票种-面额","余量","票种-面额","余量","票种-面额","余量","票种-面额","余量"};
    OutputStream os=null;
    WritableWorkbook ww=null;
    File file=new File(filePath);
    if(!file.exists()){
    file.mkdir();
    }
    os=new FileOutputStream(filePath+fileName);
    ww=Workbook.createWorkbook(os);
    WritableSheet sheet=ww.createSheet(fileName, 0);

    //文字对齐方式
            WritableCellFormat wcf = new WritableCellFormat();  
            wcf.setAlignment(Alignment.CENTRE);//把水平对齐方式指定为居中 
            wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//把垂直对齐方式指定为居中 

    这里大家可以参考我上面导出的结果看看,下面的如何合并单元格的
    //合并单元格
    //WritableSheet.mergeCells(int m,int n,int p,int q);
            //作用是从(m,n)到(p,q)的单元格全部合并[我的理解:m列、n行和p列、q行合并]
    sheet.mergeCells(0, 0, 0, 1);//设置第一列、第一行和 第一列、第二行合并
    sheet.mergeCells(1, 0, 1, 1);
    sheet.mergeCells(2, 0, 2, 1);//这里是标题“区域” 它合并的是第3列第1行和第3列第2行
    sheet.mergeCells(3, 0, 3, 1);
    sheet.mergeCells(4, 0, 4, 1);
    sheet.mergeCells(5, 0, 6, 0);//货道一
    sheet.mergeCells(7, 0, 8, 0);//货道二
    sheet.mergeCells(9, 0, 10,0);//货道三
    sheet.mergeCells(11, 0, 12,0);//货道四
    sheet.mergeCells(13, 0, 13, 1);
    try {//添加第一行标题
    for (int i = 0; i < tittles.length; i++) {
    sheet.addCell(new Label(i, 0, tittles[i],wcf));//i列,1行,title内容,wcf样式
    }//添加第二行标题
    for (int i = 0; i < tittles2.length; i++) {
    sheet.addCell(new Label(i, 1, tittles2[i],wcf));//i列,2行,title内容,wcf样式
    }
    sheet.setColumnView(1, 15);//设置第2列的宽度
    sheet.setColumnView(3, 15);//设置第4列的宽度
    int count=2;
    if(alarmLimits!=null){
    for (int i = 0; i < alarmLimits.size(); i++) {
    NoLotteryAlarm alarmLimit=alarmLimits.get(i);
    sheet.addCell(new Label(0, count, i+1+"",wcf));

    if (StringUtil.isNotEmpty(alarmLimit.getTotal_alerm_content())) {
    Integer str=alarmLimit.getTotal_alerm_content();
    if(str.equals(Constant.NO_LOTTERY_ALERM_JJ)){
    sheet.addCell(new Label(1,count, "紧急缺货",wcf));
    }
    else if(str.equals(Constant.NO_LOTTERY_ALERM_ZY)){
    sheet.addCell(new Label(1,count,"重要缺货",wcf));
    }
    else{
    sheet.addCell(new Label(1,count,"余量充足",wcf));
    }
    }else {
    sheet.addCell(new Label(1,count,"",wcf));
    }
    if(StringUtil.isNotEmpty(alarmLimit.getArea_name())){
    sheet.addCell(new Label(2, count, String.valueOf(alarmLimit.getArea_name()),wcf));
    }else {
    sheet.addCell(new Label(2, count, "",wcf));
    }
    if(StringUtil.isNotEmpty(alarmLimit.getLottery_hard_seq())){
    sheet.addCell(new Label(3, count, alarmLimit.getLottery_hard_seq(),wcf));
    }else {
    sheet.addCell(new Label(3, count, "",wcf));
    }
    sheet.addCell(new Label(4, count, alarmLimit.getTotal_count()+"",wcf));
    String str1="";
    if(alarmLimit.getLottery_name1()!=null)str1+=alarmLimit.getLottery_name1()+"-";
    if(alarmLimit.getLottery_price1()!=null)str1+=alarmLimit.getLottery_price1();
    sheet.addCell(new Label(5, count, str1,wcf));
    sheet.setColumnView(5, 15);//设置第6列的宽度
    if(alarmLimit.getA01_count()!=null)sheet.addCell(new Label(6, count, alarmLimit.getA01_count()+"",wcf));
    else sheet.addCell(new Label(6, count, "",wcf));
    String str2="";
    if(alarmLimit.getLottery_name2()!=null)str2+=alarmLimit.getLottery_name2()+"-";
    if(alarmLimit.getLottery_price2()!=null)str2+=alarmLimit.getLottery_price2();
    sheet.addCell(new Label(7, count, str2,wcf));
    sheet.setColumnView(7, 15);//设置第8列的宽度
    if(alarmLimit.getA02_count()!=null)sheet.addCell(new Label(8, count, alarmLimit.getA02_count()+"",wcf));
    else sheet.addCell(new Label(8, count, "",wcf));
    String str3="";
    if(alarmLimit.getLottery_name3()!=null)str3+=alarmLimit.getLottery_name3()+"-";
    if(alarmLimit.getLottery_price3()!=null)str3+=alarmLimit.getLottery_price3();
    sheet.addCell(new Label(9, count,str3,wcf));
    sheet.setColumnView(9, 15);//设置第10列的宽度
    if(alarmLimit.getA03_count()!=null)sheet.addCell(new Label(10, count, alarmLimit.getA03_count()+"",wcf));
    else sheet.addCell(new Label(10, count, "",wcf));
    String str4="";
    if(alarmLimit.getLottery_name4()!=null)str4+=alarmLimit.getLottery_name4()+"-";
    if(alarmLimit.getLottery_price4()!=null)str4+=alarmLimit.getLottery_price4();
    sheet.addCell(new Label(11, count,str4,wcf));
    sheet.setColumnView(11, 15);//设置第12列的宽度
    if(alarmLimit.getA04_count()!=null)sheet.addCell(new Label(12, count, alarmLimit.getA04_count()+"",wcf));
    else sheet.addCell(new Label(12, count, "",wcf));
    sheet.addCell(new Label(13, count, alarmLimit.getUbox_code(),wcf));
    count++;
    }
    }
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    finally{
    try {
    ww.write();
    ww.close();
    os.flush();
    os.close();
    } catch (Exception e) {
    e.printStackTrace();
    }

    }
    }

    -----------------------------------------------------代码结束-----------------------------------------------------

    若有不懂的,可以联系我喔,希望可以略尽绵力     QQ:156003025,邮箱:lvhongfen@uboxol.com


    参考于:http://zhidao.baidu.com/question/127972298.html

    http://blog.csdn.net/hzw2312/article/details/6691543

    展开全文
  • jxl是一个韩国人写的java操作excel的工具,在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的,并不依赖Windows...

    jxl是一个韩国人写的java操作excel的工具,在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。

    要使用jxl,需要到jxl官网地址下载jxl的jar包,现在的jxl最新版是2.6.12,下载地址:

    一、写excel

    拟生成一个名为"jxl.xls"的Excel文件,其中第一个工作表被命名为"sheet1",大致效果如下:

    package com.jxl;

    //生成Excel的类

    import java.io.File;

    import jxl.Cell;

    import jxl.CellType;

    import jxl.LabelCell;

    import jxl.NumberCell;

    import jxl.Sheet;

    import jxl.Workbook;

    import jxl.write.Label;

    import jxl.write.Number;

    import jxl.write.WritableSheet;

    import jxl.write.WritableWorkbook;

    public class JxlWriteExcel {

    public static void main(String args[]) {

    writeExcel();

    }

    public static void writeExcel(){

    try {

    // 打开文件

    WritableWorkbook workbook = Workbook.createWorkbook(

    new File("e:/jxl.xls"));

    // 生成名为"sheet1"的工作表,参数0表示这是第一页

    WritableSheet sheet = workbook.createSheet("sheet1", 0);

    // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)

    // 以及单元格内容为jxl第一个标签第一行第一列

    Label label = new Label(0, 0, "jxl第一个标签第一行第一列");

    // 将定义好的单元格添加到工作表中

    sheet.addCell(label);

    // 使用 jxl.write.Number输出数字

    // 否则有语法歧义单元格位置是第二列,第一行,值为201307.12

    Number number = new Number(1, 0,201307.12);

    sheet.addCell(number);

    // 写入数据并关闭文件

    workbook.write();

    workbook.close();

    } catch (Exception ex) {

    ex.printStackTrace();

    }

    }

    }

    二、读取excel文件

    用刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:

    package com.jxl;

    import java.io.File;

    import jxl.Cell;

    import jxl.CellType;

    import jxl.LabelCell;

    import jxl.NumberCell;

    import jxl.Sheet;

    import jxl.Workbook;

    import jxl.write.Label;

    import jxl.write.Number;

    import jxl.write.WritableSheet;

    import jxl.write.WritableWorkbook;

    public class JxlReadExcel {

    public static void main(String args[]) {

    readExcel();

    }

    public static void readExcel(){

    try{

    Workbook book=Workbook.getWorkbook(new File("e:/jxl.xls"));

    //获得第一个工作表对象

    Sheet sheet=book.getSheet(0);

    //得到列数

    int colNum=sheet.getColumns();

    //得到行数

    int rowNum=sheet.getRows();

    //得到第一列第一行的单元格

    Cell cell1=sheet.getCell(0,0);

    String result=cell1.getContents();

    System.out.println(result);

    cell1=sheet.getCell(1,0);

    double numberb2 = 0;

    if (cell1.getType() == CellType.LABEL)

    {

    LabelCell lc = (LabelCell) cell1;

    result = lc.getString();

    }

    if (cell1.getType() == CellType.NUMBER)

    {

    NumberCell nc = (NumberCell) cell1;

    numberb2 = nc.getValue();

    }

    System.out.println(numberb2);

    book.close();

    }catch (Exception ex) {

    ex.printStackTrace();

    }

    }

    }

    三、字串格式化,设置字体、粗细、字号

    字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和WritableCellFormat类来负责。假设我们在生成一个含有字串的单元格时,使用如下语句, 为方便叙述,我们为每一行命令加了编号:

    //指定了字串格式:字体为ARIAL,字号12,正常显示

    WritableFont font1=new WritableFont(WritableFont.ARIAL,

    12,WritableFont.NO_BOLD);

    WritableCellFormat format1=new WritableCellFormat(font1);

    Label label = new Label(0, 0, "jxl第一个标签第一行第一列",format1);

    在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们上面的实例,可以指定:

    //把水平对齐方式指定为居中

    format1.setAlignment(jxl.format.Alignment.CENTRE);

    //把垂直对齐方式指定为居中

    format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);

    二、单元格操作,设置行高,列宽,合并单元格

    Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI提供了这些支持。这些操作相对比较简单,下面只介绍一下相关的API。

    1、合并单元格

    WritableSheet.mergeCells(intm,intn,intp,intq);

    //作用是从(m,n)到(p,q)的单元格全部合并,比如:

    WritableSheetsheet=book.createSheet("第一页",0);

    //合并第一列第一行到第六列第一行的所有单元格

    sheet.mergeCells(0,0,5,0);

    合并既可以是横向的,也可以是纵向的。合并后的单元格不能再次进行合并,否则会触发异常。

    2、行高和列宽

    WritableSheet.setRowView(int i,int height);

    //作用是指定第i+1行的高度,比如:

    //将第一行的高度设为100

    sheet.setRowView(0,100);

    WritableSheet.setColumnView(int i,int width);

    //作用是指定第i+1列的宽度,比如:

    //将第一列的宽度设为20

    sheet.setColumnView(0,30);

    展开全文
  • jxl导出excel合并单元格

    万次阅读 2014-11-04 10:59:02
    Demo [java] view plaincopy ... import jxl.*; import jxl.format.UnderlineStyle; import jxl.write.*; public class CreateXLS { public static void main(String args[]
  • 2 import jxl.*;3 importjxl.format.UnderlineStyle;4 import jxl.write.*;5 public classCreateXLS {6 public static voidmain(String args[]) {7 try{8 //打开文件9 WritableWorkbook book= Workbo...
  • Demo [java] view plaincopy import java.io.*;...import jxl.*;...import jxl.format.UnderlineStyle;  import jxl.write.*;  public class CreateXLS {   public static voi
  • Demo 代码如下: 1 import java.io.*;... 2 import jxl.*; 3 import jxl.format.UnderlineStyle; 4 import jxl.write.*; 5 public class CreateXLS { 6 public static void main(String args[]...
  • //合并单元格,第一个参数:要合并 的单元格最左上角的列号,第二个参数:要合并的单元格最左上角的行号,第三个参数:要合并的 单元格最右角的列号,第四个参数:要合并的单元格最右下角的行号 } else { sheet....
  • jxl导出excel合并行、合并列、单元格居中、单元格固定宽度、字体加粗、分页签)
  • 第一个参数:要合并单元格最左上角的列号,第二个参数:要合并单元格最左上角的行号,第三个参数:要合并单元格最右角的列号,第四个参数:要合并单元格最右下角的行号。 是不是没有太懂下面用例子来简单...
  • 另参考:... 现在正在做的项目中涉及大量的Excel文件导出导入操作,都是使用Java Excel来操作。 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Exc
  • jxl合并单元格导出excel

    千次阅读 2014-10-27 16:39:31
    //开始合并单元格。第一第三个参数表示列,第二第四个参数表示行  ws.mergeCells(0, 0, 2, 0); //合并第一列的第一行到第三列的第一行  ws.mergeCells(0, 1, 0, 8); //合并第一列的第二行到第一列的第九行 ...
  • jxl使用excel模板方式导出合并单元格数据项所需jar包: freemarker-2.3.18.jar freemarker-util-0.0.1-SNAPSHOT.jar jxl-2.6.10.jar jxl-report-1.0.jar
  • 现在正在做的项目中涉及大量的Excel文件导出导入操作,...下面我写了一个简单的例子,展示基本的读取,新建,更新(包括常见格式的设置:字体,颜色,背景,合并单元格),拷贝操作,有这些其实已经基本足够应付大部分问题了
  • 现在正在做的项目中涉及大量的Excel文件导出导入操作,...下面我写了一个简单的例子,展示基本的读取,新建,更新(包括常见格式的设置:字体,颜色,背景,合并单元格),拷贝操作,有这些其实已经基本足够应付大部分问题了
  • 使用jxl导出Excel

    2020-03-15 20:11:37
    1.合并单元格设置值:warning:rangeD2-F2containsmorethan one data cell. setting the other cells to blank 这是设置合并的单元格值的时候单元格错了 序号 问题描述 ...
  • 项目上要求根据一个List,导出Excel文件。因为jxl只能支持到excel2003,所以本程序也只支持excel2003(行列数限制很大). 文件的上边栏(主)跟左边栏(宾)如果有相同单元格的话,要合并。 下面这个文件是调用方式...
  • 本次测试操作实现的功能主要有: ...合并单元格 设置单元格背景颜色 代码如下: package cn.xuzihui.excel; import java.io.File; import java.io.IOException; import jxl.Workbook; import jx...
  • jxl导出excel

    2010-11-15 14:03:56
    最近在做exce的导出,用的是jxl,感觉上没有什么难处,但是哪个单元格合并和填充值的时候感觉好难。 贴出来让大家看看,看看哪里还有不妥之处: 页面也就是一个jsp页面没啥可说的。 由于用的struts2,所有在...
  • ExcelDemo_Excel导出_下载_POI读excel_JXL读写excel_java读写excel_列宽_读取合并或拆分单元格内容
  • 使用poi导出excel(插入行 合并单元格) 在项目开发中,导出导入是一种常见的功能,而我自己所用过的 有 jxl和poi。因为很多的功能jxl并不能提供,所以基本上选择了poi来实现。记几个 用的功能,也是百度...
  • 下面是我写的一个jxl导出excel: java代码: public class ExportExcel { public void Excel(RequestData req){ //String path =ExportExcel.class.getResource("").getPath(); String realpath = ...
  • jxl 导出固定格式的excel的一套代码 excel固定格式的合并多少行都以参数形式传入来进行合并,注:每个单元格只能合并一次,不然会以最后一次合并为准,所以传入的参数都是以合并的最后一个单元格中传入
  • 概述 excel比较常用的工具类就是poi和jxl当然后者已经停止维护很久而且只支持excel...简单格式的数据导出jxl就够用了,但是复杂格式的数据则用excel模板较为方便 <dependency> <groupId>net.sf....

空空如也

空空如也

1 2 3 4
收藏数 73
精华内容 29
关键字:

jxl导出excel合并单元格