zoukankan      html  css  js  c++  java
  • java 运用jxl 读取和输出Excel

    文章结尾源码以及jxl包

    1、输出excel:

    package JmExcel;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.WritableCellFormat;
    import jxl.write.WritableFont;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    import jxl.write.WriteException;
    import jxl.write.biff.RowsExceededException;
    
    public class JavaMakeExcel {
        private List list = new ArrayList();
        
        
        public  void createQuarterlyExcel(OutputStream os) throws IOException, RowsExceededException, WriteException, InterruptedException{
            //创建一个工作薄excel文档
            WritableWorkbook workbook = Workbook.createWorkbook(os);
            //创建一个表sheet,一个工作薄可以有多个sheet
            WritableSheet sheet = workbook.createSheet("季度报", 0);
            //设置列宽,行列开始下标均为0
            sheet.setColumnView(0, 4);
            sheet.setColumnView(1, 10);
            sheet.setColumnView(2, 16);
            sheet.setColumnView(3, 20);
            sheet.setColumnView(4, 8);
            sheet.setColumnView(5, 12);
            sheet.setColumnView(6, 7);
            sheet.setColumnView(7, 12);
            sheet.setColumnView(8, 20);
            sheet.setColumnView(9, 20);
            sheet.setColumnView(10,20);
            sheet.setColumnView(11,16);
            
            Calendar cal = Calendar.getInstance();
            //添加合并单元格,第一个参数是起始列,第二个参数是起始行,第三个参数是终止列,第四个参数是终止行
            sheet.mergeCells(0, 0, 1, 0);
            //创建一个单元格,第一个参数为开始列,第二个参数为开始行,第三个参数为填充内容,第四个参数(可省略)内容格式
            Label fj = new Label(0,0,"附件:");
            //在表中添加该单元格
            sheet.addCell(fj);
            //合并单元格,第一个参数是起始列,第二个参数是起始行,第三个参数是终止列,第四个参数是终止行
            sheet.mergeCells(0, 1, 11, 1); 
            //创建内容样式1:表头样式,设置字体种类和黑体显示,字体为Arial,字号大小为22,加粗
            WritableFont bold = new WritableFont(WritableFont.createFont("宋体"),22,WritableFont.BOLD);
            WritableCellFormat titleFormate = new WritableCellFormat(bold);//生成一个单元格样式控制对象
            titleFormate.setAlignment(jxl.format.Alignment.CENTRE);//单元格中的内容水平方向居中
            titleFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//单元格的内容垂直方向居中
            //Label(开始列,开始行,labeltitle,格式化);
            Label title = new Label(0,1,"**区"+cal.get(cal.YEAR)+"年市委市政府重点工作落实情况表",titleFormate);
            //设置行高,.setRowView(行下标,高度值)
            sheet.setRowView(1, 700, false);
            sheet.addCell(title);
            
            //创建内容样式2:表列头样式
            WritableFont color = new WritableFont(WritableFont.createFont("宋体"),10,WritableFont.BOLD);
            WritableCellFormat colorFormat = new WritableCellFormat(color);
            colorFormat.setAlignment(jxl.format.Alignment.CENTRE);
            colorFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
            colorFormat.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);
            colorFormat.setWrap(true);
            //创建内容样式3
            WritableFont size = new WritableFont(WritableFont.createFont("宋体"),8,WritableFont.BOLD);
            WritableCellFormat colorFormat2 = new WritableCellFormat(size);
            colorFormat2.setAlignment(jxl.format.Alignment.CENTRE);
            colorFormat2.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
            colorFormat2.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);
            colorFormat2.setWrap(true);
            
            sheet.setRowView(2, 350, false);
            //填充表头
            sheet.mergeCells(0, 2, 0, 3);
            Label index = new Label(0,2,"序号",colorFormat);
            sheet.addCell(index);
            sheet.mergeCells(1, 2, 1, 3);
            Label leibie = new Label(1,2,"类别",colorFormat);
            sheet.addCell(leibie);
            sheet.mergeCells(2, 2, 2, 3);
            Label aim = new Label(2,2,"区年度具体目标",colorFormat);
            sheet.addCell(aim);
            Label aim2 = new Label(3,2,"工作目标",colorFormat);
            sheet.addCell(aim2);
            Label quarter = new Label(3,3,"三季度",colorFormat);
            sheet.addCell(quarter);
            sheet.mergeCells(4, 2, 4, 3);
            Label localHead = new Label(4,2,"区分管领导",colorFormat);
            sheet.addCell(localHead);
            sheet.mergeCells(5, 2, 5, 3);
            Label deptname = new Label(5,2,"牵头单位",colorFormat);
            sheet.addCell(deptname);
            sheet.mergeCells(6, 2, 6, 3);
            Label checker = new Label(6,2,"责任人",colorFormat);
            sheet.addCell(checker);
            sheet.mergeCells(7, 2, 7, 3);
            Label assist = new Label(7,2,"协办单位",colorFormat);
            sheet.addCell(assist);
            sheet.mergeCells(8, 2, 8, 3);
            Label finish = new Label(8,2,"落实情况",colorFormat);
            sheet.addCell(finish);
            sheet.mergeCells(9, 2, 9, 3);
            Label problem = new Label(9,2,"存在问题",colorFormat);
            sheet.addCell(problem);
            sheet.mergeCells(10, 2, 10, 3);
            Label next = new Label(10,2,"下部措施",colorFormat);
            sheet.addCell(next);
            sheet.mergeCells(11, 2, 11, 3);
            Label waring = new Label(11,2,"完成状态(按计划进行、进度顺利但有延误风险、延误)",colorFormat2);
            sheet.addCell(waring);
            //创建内容样式4:表正文样式
            WritableFont zw = new WritableFont(WritableFont.createFont("宋体"),10);
            WritableCellFormat zwFormat = new WritableCellFormat(zw);
            zwFormat.setAlignment(jxl.format.Alignment.CENTRE);
            zwFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
            zwFormat.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);
            zwFormat.setWrap(true);  //换行:正文样式添加自动换行
            //遍历输出正文
            for (int i = 0; i < list.size(); i++) {
                Map m = (Map) list.get(i);
                String lbstr = String.valueOf(m.get("lb"));
                String year_target = String.valueOf(m.get("year_target"));
                String quarterly_target = String.valueOf(m.get("quarterly_target"));
                String head_name = String.valueOf(m.get("head_name"));
                String person_liable = String.valueOf(m.get("person_liable"));
                String main_dept_name = String.valueOf(m.get("main_dept_name"));
                String assist_dept_name = String.valueOf(m.get("assist_dept_name"));
                String contentes = String.valueOf(m.get("contentes"));
                String problem1 = String.valueOf(m.get("problem"));
                String nextplan = String.valueOf(m.get("nextplan"));
                String waringstr = null;
                String struts = String.valueOf(m.get("status"));
                struts= (struts.equals("null")) ? "1" : struts;
                int waringflag = Integer.parseInt(struts) ;
                if (waringflag == 1) {
                    waringstr = "按计划进行";
                }else if (waringflag == 2) {
                    waringstr = "进度顺利但有延误风险";
                }else if (waringflag == 3) {
                    waringstr = "延误";
                }
                
                Label index2 = new Label(0,i+4,String.valueOf(i+1),zwFormat);
                sheet.addCell(index2);
                Label lb = new Label(1,i+4,lbstr,zwFormat);
                sheet.addCell(lb);
                Label year_targetl = new Label(2,i+4,year_target,zwFormat);
                sheet.addCell(year_targetl);
                Label quarterly_targetl = new Label(3,i+4,quarterly_target,zwFormat);
                sheet.addCell(quarterly_targetl);
                Label head_namel = new Label(4,i+4,head_name,zwFormat);
                sheet.addCell(head_namel);
                Label main_dept_namel = new Label(5,i+4,main_dept_name,zwFormat);
                sheet.addCell(main_dept_namel);
                Label person_liablel = new Label(6,i+4,person_liable,zwFormat);
                sheet.addCell(person_liablel);
                Label assist_dept_namel = new Label(7,i+4,assist_dept_name,zwFormat);
                sheet.addCell(assist_dept_namel);
                Label contentesl = new Label(8,i+4,contentes,zwFormat);
                sheet.addCell(contentesl);
                Label probleml = new Label(9,i+4,problem1,zwFormat);
                sheet.addCell(probleml);
                Label nextplanl = new Label(10,i+4,nextplan,zwFormat);
                sheet.addCell(nextplanl);
                Label waringstrl = new Label(11,i+4,waringstr,zwFormat);
                sheet.addCell(waringstrl);
            }
            
            
            workbook.write();
            workbook.close();
            os.close();
        }
        
        
        public static void main(String[] args) throws RowsExceededException, WriteException, IOException {
            JavaMakeExcel jmXL = new JavaMakeExcel();
            Map map = new HashMap();
            map.put("lb", "市重点工作");
            map.put("year_target", "深入落实贯彻党的十九大会议精神");
            map.put("quarterly_target", "新开工和筹建9660套");
            map.put("head_name", "ckx");
            map.put("person_liable", "戴敏");
            map.put("main_dept_name", "区纪委");
            map.put("assist_dept_name", "督查室");
            map.put("contentes", "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111");
            map.put("problem", "1111111111111111111111111111111111111111111111111111111111111111111");
            map.put("nextplan", "1111111");
            map.put("status", "1");
            
            Map map2 = new HashMap();
            map2.put("lb", "区常委会议定");
            map2.put("year_target", "刨路修路挣外快");
            map2.put("quarterly_target", "再刨一百公里");
            map2.put("head_name", "zrt");
            map2.put("person_liable", "任公仆");
            map2.put("main_dept_name", "住建局");
            map2.put("assist_dept_name", "城管大队");
            map2.put("contentes", "222222212222222222222222222222222222222222222222222222222222");
            map2.put("problem", "2222222");
            map2.put("nextplan", "2222222");
            map2.put("status", "2");
            //List list = new ArrayList();
            jmXL.list.add(map);
            jmXL.list.add(map2);
            //创建文件保存地址
            File file=new File("D:/myeclipseworkpase/我的Java输出Excel.xls");
            //新建文件输出流
            OutputStream os = new FileOutputStream(file);
            try {
                jmXL.createQuarterlyExcel(os);
            } catch (InterruptedException e) {
                System.out.println("输出失败!");
            }
        }
    
    }

    2、读取:

    package JmExcel;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
    
    public class  JavaReadExcel{
        
        private String filePath;
        private List list = new ArrayList();
        
        public JavaReadExcel(String filePath){
            this.filePath = filePath;
        }
        
        private List readExcel() throws IOException, BiffException{
            //创建输入流
            InputStream stream = new FileInputStream(filePath);
            //获取Excel文件对象
            Workbook  rwb = Workbook.getWorkbook(stream);
            //获取文件的指定工作表 默认的第一个
            Sheet sheet = rwb.getSheet(0);  
            //行数(表头的目录不需要,从1开始) sheet.getRows()获取excel行数
            for(int i=0; i<sheet.getRows(); i++){
                 //创建一个数组 用来存储每一列的值  sheet.getColumns()获取excel列数
                String[] str = new String[sheet.getColumns()];
                Cell cell = null;
                //列数
                for(int j=0; j<sheet.getColumns(); j++){
                  //获取第i行,第j列的值 sheet.getCell(逐行,逐列)
                  cell = sheet.getCell(j,i);    
                  str[j] = cell.getContents();
                }
              //把刚获取的列存入list
              list.add(str);
            }
            return list;
        }
        
        private void outData(){
             for(int i=0;i<list.size();i++){
                 String[] str = (String[])list.get(i);
                 for(int j=0;j<str.length;j++){
                  System.out.print(str[j]+'	');
                 }
                 System.out.println();
             }
        }
        
        public static void main(String args[]) throws BiffException, IOException{
            JavaReadExcel excel = new JavaReadExcel("D:/myeclipseworkpase/我的Java输出Excel.xls");
            List li = excel.readExcel();
             for(int i=0;i<li.size();i++){
                 String[] str = (String[])li.get(i);
                 for(int j=0;j<str.length;j++){
                  System.out.print(str[j]+'	');
                 }
                 System.out.println();
             }
        }
    }

     源码:

     链接:http://pan.baidu.com/s/1kVL2DWr 密码:h643

  • 相关阅读:
    VSTO开发指南(VB2013版) 第四章 Excel编程
    VSTO开发指南(VB2013版) 第三章 Excel编程
    VSTO开发指南(VB2013版) 第二章 Office解决方案介绍
    VSTO开发指南(VB2013版) 第一章 Office对象模型
    打印预览
    打印
    工具函数
    开始使用
    模版对应信息
    解决PLSQL或者sqlplus连接oracle慢的方法
  • 原文地址:https://www.cnblogs.com/ckxlovejava/p/7881208.html
Copyright © 2011-2022 走看看