[Java] excel导出 →→→→→进入此内容的聊天室

来自 , 2021-01-22, 写在 Java, 查看 192 次.
URL http://www.code666.cn/view/ab88b157
  1.   //定义列宽
  2.    sheet.setColumnView(0, 13);
  3.  //定义行高
  4.    sheet.setRowView(0, 380);
  5.  
  6.                         创建日期   
  7.                         Calendar c = Calendar.getInstance();
  8.                         Date date = c.getTime();
  9.                         WritableCellFormat cf1 = new WritableCellFormat(DateFormats.FORMAT1);
  10.                         DateTime dt = new DateTime(0, 10, date, cf1);
  11.                         sheet.addCell(dt);
  12.  
  13. 一.读取Excel文件内容
  14.  
  15.     java 代码
  16.  
  17.          
  18.         public static String readExcel(File file){  
  19.             StringBuffer sb = new StringBuffer();  
  20.                
  21.             Workbook wb = null;  
  22.             try {  
  23.                 //构造Workbook(工作薄)对象  
  24.                 wb=Workbook.getWorkbook(file);  
  25.             } catch (BiffException e) {  
  26.                 e.printStackTrace();  
  27.             } catch (IOException e) {  
  28.                 e.printStackTrace();  
  29.             }  
  30.                
  31.             if(wb==null)  
  32.                 return null;  
  33.                
  34.             //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了  
  35.             Sheet[] sheet = wb.getSheets();  
  36.                
  37.             if(sheet!=null&&sheet.length>0){  
  38.                 //对每个工作表进行循环  
  39.                 for(int i=0;i
  40.                     //得到当前工作表的行数  
  41.                     int rowNum = sheet[i].getRows();  
  42.                     for(int j=0;j
  43.                         //得到当前行的所有单元格  
  44.                         Cell[] cells = sheet[i].getRow(j);  
  45.                         if(cells!=null&&cells.length>0){  
  46.                             //对每个单元格进行循环  
  47.                             for(int k=0;k
  48.                                 //读取当前单元格的值  
  49.                                 String cellValue = cells[k].getContents();  
  50.                                 sb.append(cellValue+"\t");  
  51.                             }  
  52.                         }  
  53.                         sb.append("\r\n");  
  54.                     }  
  55.                     sb.append("\r\n");  
  56.                 }  
  57.             }  
  58.             //最后关闭资源,释放内存  
  59.             wb.close();  
  60.             return sb.toString();  
  61.         }  
  62.  
  63. 二.写入Excel文件
  64.  
  65.     这里有很多格式了,比如文本内容加粗,加上某些颜色等,可以参考jxl的api,同时还推荐一篇不错的文章:http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10
  66.     java 代码
  67.  
  68.          
  69.             public static void writeExcel(String fileName){  
  70.                 WritableWorkbook wwb = null;  
  71.                 try {  
  72.                     //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象  
  73.                     wwb = Workbook.createWorkbook(new File(fileName));  
  74.                 } catch (IOException e) {  
  75.                     e.printStackTrace();  
  76.                 }  
  77.                 if(wwb!=null){  
  78.                     //创建一个可写入的工作表  
  79.                     //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置  
  80.                     WritableSheet ws = wwb.createSheet("sheet1", 0);  
  81.                        
  82.                     //下面开始添加单元格  
  83.                     for(int i=0;i<10;i++){  
  84.                         for(int j=0;j<5;j++){  
  85.                             //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行  
  86.                             Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");  
  87.                             try {  
  88.                                 //将生成的单元格添加到工作表中  
  89.                                 ws.addCell(labelC);  
  90.                             } catch (RowsExceededException e) {  
  91.                                 e.printStackTrace();  
  92.                             } catch (WriteException e) {  
  93.                                 e.printStackTrace();  
  94.                             }  
  95.          
  96.                         }  
  97.                     }  
  98.          
  99.                     try {  
  100.                         //从内存中写入文件中  
  101.                         wwb.write();  
  102.                         //关闭资源,释放内存  
  103.                         wwb.close();  
  104.                     } catch (IOException e) {  
  105.                         e.printStackTrace();  
  106.                     } catch (WriteException e) {  
  107.                         e.printStackTrace();  
  108.                     }  
  109.                 }  
  110.             }  
  111.  
  112. 三.在一个Excel文件中查找是否包含某一个关键字
  113.  
  114.     java 代码
  115.  
  116.          
  117.             public static boolean searchKeyWord(File file,String keyWord){  
  118.                 boolean res = false;  
  119.                    
  120.                 Workbook wb = null;  
  121.                 try {  
  122.                     //构造Workbook(工作薄)对象  
  123.                     wb=Workbook.getWorkbook(file);  
  124.                 } catch (BiffException e) {  
  125.                     return res;  
  126.                 } catch (IOException e) {  
  127.                     return res;  
  128.                 }  
  129.                    
  130.                 if(wb==null)  
  131.                     return res;  
  132.                    
  133.                 //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了  
  134.                 Sheet[] sheet = wb.getSheets();  
  135.                    
  136.                 boolean breakSheet = false;  
  137.                    
  138.                 if(sheet!=null&&sheet.length>0){  
  139.                     //对每个工作表进行循环  
  140.                     for(int i=0;i
  141.                         if(breakSheet)  
  142.                             break;  
  143.                            
  144.                         //得到当前工作表的行数  
  145.                         int rowNum = sheet[i].getRows();  
  146.                            
  147.                         boolean breakRow = false;  
  148.                            
  149.                         for(int j=0;j
  150.                             if(breakRow)  
  151.                                 break;  
  152.                             //得到当前行的所有单元格  
  153.                             Cell[] cells = sheet[i].getRow(j);  
  154.                             if(cells!=null&&cells.length>0){  
  155.                                 boolean breakCell = false;  
  156.                                 //对每个单元格进行循环  
  157.                                 for(int k=0;k
  158.                                     if(breakCell)  
  159.                                         break;  
  160.                                     //读取当前单元格的值  
  161.                                     String cellValue = cells[k].getContents();  
  162.                                     if(cellValue==null)  
  163.                                         continue;  
  164.                                     if(cellValue.contains(keyWord)){  
  165.                                         res = true;  
  166.                                         breakCell = true;  
  167.                                         breakRow = true;  
  168.                                         breakSheet = true;  
  169.                                     }  
  170.                                 }  
  171.                             }  
  172.                         }  
  173.                     }  
  174.                 }  
  175.                 //最后关闭资源,释放内存  
  176.                 wb.close();  
  177.                    
  178.                 return res;  
  179.             }  
  180.  
  181. 四.往Excel中插入图片图标
  182.  
  183.     插入图片的实现很容易,参看以下代码:
  184.     java 代码
  185.  
  186.          
  187.         public static void insertImg(WritableSheet dataSheet, int col, int row, int width,  
  188.                 int height, File imgFile){  
  189.             WritableImage img = new WritableImage(col, row, width, height, imgFile);  
  190.             dataSheet.addImage(img);  
  191.         }  
  192.  
  193.     以上代码的注释已经很清楚了,大概也就不用再解释了,我们可以用如下程序验证:
  194.     java 代码
  195.  
  196.             try {  
  197.                 //创建一个工作薄  
  198.         WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));  
  199.         //待插入的工作表  
  200.         WritableSheet imgSheet = workbook.createSheet("Images",0);  
  201.         //要插入的图片文件  
  202.         File imgFile = new File("D:/1.png");  
  203.         //图片插入到第二行第一个单元格,长宽各占六个单元格  
  204.         insertImg(imgSheet,0,1,6,6,imgFile);  
  205.         workbook.write();  
  206.         workbook.close();  
  207.          catch (IOException e) {  
  208.         e.printStackTrace();  
  209.          catch (WriteException e) {  
  210.         e.printStackTrace();  
  211.  
  212.      但是jxl只支持png格式的图片,jpg格式和gif格式都不支持
  213.  
  214. 五.插入页眉页脚
  215.  
  216.     一般的页眉页脚都分为三个部分,左,中,右三部分,利用如下代码可实现插入页眉页脚
  217.     java 代码
  218.  
  219.          
  220.         public static void setHeader(WritableSheet dataSheet,String left,String center,String right){  
  221.             HeaderFooter hf = new HeaderFooter();  
  222.             hf.getLeft().append(left);  
  223.             hf.getCentre().append(center);  
  224.             hf.getRight().append(right);  
  225.             //加入页眉  
  226.             dataSheet.getSettings().setHeader(hf);  
  227.             //加入页脚  
  228.             //dataSheet.getSettings().setFooter(hf);  
  229.         }  
  230.  
  231.     我们可以用如下代码测试该方法:
  232.     java 代码
  233.  
  234.             try {  
  235.                 //创建一个工作薄  
  236.             WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));  
  237.             //待插入的工作表  
  238.             WritableSheet dataSheet = workbook.createSheet("加入页眉",0);  
  239.             ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "第1页,共3页");  
  240.             workbook.write();  
  241.             workbook.close();  
  242.         } catch (IOException e) {  
  243.             e.printStackTrace();  
  244.         } catch (WriteException e) {  
  245.             e.printStackTrace();  
  246.         }  
  247.           }  
  248.  
  249.      
  250.  
  251.     合并单元格:
  252.  
  253.     //首先创建一个sheet
  254.  
  255.     WritableSheet sheetWrite=writeWorkbook.createSheet("sheet的名称",0);
  256.  
  257.     //把 单元格(column, row)到单元格(column1, row1)进行合并。
  258.  
  259.     sheetWrite.mergeCells(column, row, column1, row1);
  260.  
  261.      
  262.  
  263.      
  264.  
  265.      
  266.  
  267.      
  268.     java 操作excel,jxl加边框,jxl合并单元格,单元格的设置,单元
  269.  
  270.     WritableCellFormat headerFormat = new WritableCellFormat(
  271.                         HEADER_FONT_STYLE);
  272.                 //水平居中对齐
  273.                 headerFormat.setAlignment(Alignment.CENTRE);
  274.                 //竖直方向居中对齐
  275.                 headerFormat.setVerticalAlignment
  276.  
  277.     (VerticalAlignment.CENTRE);
  278.                
  279.                 //建立标签,参数依次为:列索引、行索引、内容、格式
  280.                 Label seqLabel = new Label(0, 0, "序号", headerFormat);
  281.                 //增加单元格
  282.                 sheet.addCell(seqLabel);
  283.                 //合并单元格,参数依次为:列索引、行索引、列索引+需要合并
  284.  
  285.     的列的个数、行索引+需要合并的行的个数
  286.                 sheet.mergeCells(0, 0, 0, 1);
  287.                 //设置单元格宽度,以字符为单位
  288.                 sheet.setColumnView(0, "序号".length() + 10);
  289.  
  290.                 Label basicInfoLabel = new Label(1, 0, "基本信息",
  291.  
  292.     headerFormat);
  293.                 sheet.addCell(basicInfoLabel);
  294.                 sheet.mergeCells(1, 0, 3, 0);//合并垮了3行。
  295.  
  296.              sheet.mergeCells(1, 1, 1, 3);//合并垮了3列。
  297.  
  298.      
  299.  
  300.              label = new Label(0, 1, "苹果”);
  301.             sheet.mergeCells(0,1, 0, 3- 1);//合并垮了3列。
  302.             WritableCellFormat cellFormat = new WritableCellFormat();
  303.             cellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
  304.  
  305.    // 垂直居中
  306.             label.setCellFormat(cellFormat);
  307.             sheet.addCell(label);
  308.  
  309.             注:再次使cellFormat时,需要重新NEW WritableCellFormat 。
  310.  
  311.    
  312.  
  313.          
  314.  
  315.  
  316.    
  317.  
  318.    
  319.  
  320.    
  321.  
  322.    
  323.  

回复 "excel导出"

这儿你可以回复上面这条便签

captcha