最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)的導(dǎo)出Excel工具類實(shí)例

 更新時(shí)間:2017年10月07日 01:47:07   作者:FC WORLD!!!  
這篇文章主要介紹了java實(shí)現(xiàn)的導(dǎo)出Excel工具類,結(jié)合具體實(shí)例形式分析了java導(dǎo)出Excel導(dǎo)出并生成Excel表格相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了java實(shí)現(xiàn)的導(dǎo)出Excel工具類。分享給大家供大家參考,具體如下:

ExcelExportUtil:

package com.excel;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.NumberFormat;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/**
 * 生成excel表格
 * 
 * @author
 * 
 */
public class ExcelExportUtil {
  /**
   * 構(gòu)造器
   * 
   */
  public ExcelExportUtil() {
  }
  /**
   * 生成具有一定格式excel
   * 
   * @param sheetName
   *      sheet名稱,默認(rèn)為sheet1
   * @param nf
   *      數(shù)字類型的格式 如:jxl.write.NumberFormat nf = new
   *      jxl.write.NumberFormat("#.##");默認(rèn)無(wú)格式
   * @param content
   *      二維數(shù)組,要生成excel的數(shù)據(jù)來(lái)源
   * @param 合并項(xiàng)
   *      每一項(xiàng)的數(shù)據(jù)格式為0,1,0,2 即:把(0,1)和(0,2)合并--->第1列的第一、二個(gè)元素合并
   * @param os
   *      excel輸出流
   * @param row
   *      需要水平居中的行,默認(rèn)居左。以逗號(hào)分隔的字符串
   * @param col
   *      需要水平居中的列,默認(rèn)居左。以逗號(hào)分隔的字符串
   */
  public void export(String sheetName, NumberFormat nf, String[][] content,
      String[] mergeInfo, OutputStream os, String row, String col) {
    if (VerifyUtil.isNullObject(content, os) || VerifyUtil.isNull2DArray(content)) {
      return;
    }
    // 默認(rèn)名稱
    if (VerifyUtil.isNullObject(sheetName)) {
      sheetName = "sheet1";
    }
    Set<Integer> rows = this.getInfo(row);
    Set<Integer> cols = this.getInfo(col);
    WritableWorkbook workbook = null;
    try {
      workbook = Workbook.createWorkbook(os);
      WritableSheet sheet = workbook.createSheet(sheetName, 0);
      for (int i = 0; i < content.length; i++) {
        for (int j = 0; j < content[i].length; j++) {
          if (content[i][j] == null) {
            content[i][j] = "";
          }
          if (isNumber(content[i][j]) && !rows.contains(i)
              && !cols.contains(j)) {// 處理數(shù)字
            Number number = null;
            if (VerifyUtil.isNullObject(nf)) {// 數(shù)字無(wú)格式
              number = new Number(j, i,
                  Double.valueOf(content[i][j]));
            } else {// 如果有格式,按格式生成
              jxl.write.WritableCellFormat wcfn = new jxl.write.WritableCellFormat(
                  nf);
              number = new Number(j, i,
                  Double.valueOf(content[i][j]), wcfn);
            }
            sheet.addCell(number);
          } else {// 處理非數(shù)字
            WritableCellFormat format = new WritableCellFormat();
            if (rows.contains(i) || cols.contains(j)) {
              format.setAlignment(jxl.format.Alignment.CENTRE);
            } else {
              format.setAlignment(jxl.format.Alignment.LEFT);
            }
            format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
            Label label = new Label(j, i, content[i][j], format);
            sheet.addCell(label);
          }
        }
      }
      this.merge(sheet, mergeInfo);
      workbook.write();
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        workbook.close();
        os.close();
      } catch (WriteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
  }
  /**
   * 生成固定格式的excel,表格都為文本,水平居左,垂直居中
   * 
   * @param sheetName
   *      sheet名稱,默認(rèn)為sheet1
   * @param content
   *      二維數(shù)組,要生成excel的數(shù)據(jù)來(lái)源
   * @param os
   *      excel輸出流
   */
  public void exportFormatExcel(String[][] content, String sheetName,
      OutputStream os) {
    if (VerifyUtil.isNullObject(content, os) || VerifyUtil.isNull2DArray(content)) {
      return;
    }
    // 默認(rèn)名稱
    if (VerifyUtil.isNullObject(sheetName)) {
      sheetName = "sheet1";
    }
    WritableWorkbook workbook = null;
    try {
      workbook = Workbook.createWorkbook(os);
      WritableSheet sheet = workbook.createSheet(sheetName, 0);
      for (int i = 0; i < content.length; i++) {
        for (int j = 0; j < content[i].length; j++) {
          if (content[i][j] == null) {
            content[i][j] = "";
          }
          WritableCellFormat format = new WritableCellFormat();
          format.setAlignment(jxl.format.Alignment.LEFT);
          format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
          Label label = new Label(j, i, content[i][j], format);
          sheet.addCell(label);
        }
      }
      workbook.write();
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        workbook.close();
      } catch (WriteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
  }
  /**
   * 生成固定格式的excel,表格都為文本,水平居左,垂直居中
   * 
   * @param sheetName
   *      sheet名稱,默認(rèn)為sheet1
   * @param content
   *      Map,要生成excel的數(shù)據(jù)來(lái)源
   * @param os
   *      excel輸出流
   */
  public void exportFormatExcel(Map<String, String[][]> content,
      String[] salary_name_array, String sheetName, OutputStream os)
       {
    if (VerifyUtil.isNullObject(content, os) || content.size() == 0) {
      return;
    }
    // 默認(rèn)名稱
    if (VerifyUtil.isNullObject(sheetName)) {
      sheetName = "sheet1";
    }
    WritableWorkbook workbook = null;
    try {
      workbook = Workbook.createWorkbook(os);
      WritableSheet sheet = workbook.createSheet(sheetName, 0);
      int index = 0;
      for (int k = 0; k < salary_name_array.length; k++) {
        String[][] value = (String[][]) content
            .get(salary_name_array[k]);
        if (value != null && value.length > 0) {
          if (index != 0) {
            index++;
          }
          WritableCellFormat format1 = new WritableCellFormat();
          format1.setAlignment(jxl.format.Alignment.LEFT);
          format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
          Label label1 = new Label(0, index, salary_name_array[k],
              format1);
          sheet.addCell(label1);
          for (int i = 0; i < value.length; i++) {
            index++;
            for (int j = 0; j < value[i].length; j++) {
              if (value[i][j] == null) {
                value[i][j] = "";
              }
              WritableCellFormat format = new WritableCellFormat();
              format.setAlignment(jxl.format.Alignment.LEFT);
              format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
              Label label = new Label(j, index, value[i][j],
                  format);
              sheet.addCell(label);
            }
          }
        }
      }
      workbook.write();
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        workbook.close();
      } catch (WriteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
  }
  /**
   * 合并表格
   * @param sheet
   *      工作表
   * @param mergeInfo
   *      要合并的表格的信息
   * @throws RowsExceededException
   * @throws NumberFormatException
   * @throws WriteException
   */
  private void merge(WritableSheet sheet, String[] mergeInfo)
      throws RowsExceededException, NumberFormatException, WriteException {
    if (VerifyUtil.isNullObject(sheet) || VerifyUtil.isNull1DArray(mergeInfo)) {
      return;
    } else if (!this.isMergeInfo(mergeInfo)) {
      return;
    } else {
      for (String str : mergeInfo) {
        String[] temp = str.split(",");
        sheet.mergeCells(Integer.parseInt(temp[1]),
            Integer.parseInt(temp[0]), Integer.parseInt(temp[3]),
            Integer.parseInt(temp[2]));
      }
    }
  }
  /**
   * 處理要居中的行或列的數(shù)據(jù)
   * 
   * @param indexes
   *      行標(biāo)或列標(biāo)
   * @return 行坐標(biāo)或列坐標(biāo)組成的集合
   */
  private Set<Integer> getInfo(String indexes) {
    Set<Integer> set = new HashSet<Integer>();
    if (VerifyUtil.isNullObject(indexes)) {
      return set;
    }
    String[] temp = indexes.split(",", 0);
    for (String str : temp) {
      if (isNumeric(str)) {
        set.add(Integer.parseInt(str));
      }
    }
    return set;
  }
  /**
   * 判斷字符串是否由純數(shù)字組成
   * 
   * @param str
   *      源字符串
   * @return true是,false否
   */
  private boolean isNumeric(String str) {
    if (VerifyUtil.isNullObject(str)) {
      return false;
    }
    Pattern pattern = Pattern.compile("[0-9]*");
    return pattern.matcher(str).matches();
  }
  /**
   * 判斷字符串是否是數(shù)字
   * 
   * @param str
   *      源字符串
   * @return true是,false否
   */
  private boolean isNumber(String number) {
    // 判斷參數(shù)
    if (VerifyUtil.isNullObject(number)) {
      return false;
    }
    // 查看是否有小數(shù)點(diǎn)
    int index = number.indexOf(".");
    if (index < 0) {
      return isNumeric(number);
    } else {
      // 如果有多個(gè)".",則不是數(shù)字
      if (number.indexOf(".") != number.lastIndexOf(".")) {
        return false;
      }
      String num1 = number.substring(0, index);
      String num2 = number.substring(index + 1);
      return isNumeric(num1) && isNumeric(num2);
    }
  }
  /**
   * 判斷合并項(xiàng)內(nèi)容是否合法
   * 
   * @param mergeInfo
   *      合并項(xiàng) 每一項(xiàng)的數(shù)據(jù)格式為0,1,0,2即把(0,1)和(0,2)合并
   * @return true合法,false非法
   */
  private boolean isMergeInfo(String[] mergeInfo) {
    if (VerifyUtil.isNull1DArray(mergeInfo)) {
      return false;
    } else {
      for (String str : mergeInfo) {
        String[] temp = str.split(",");
        if (VerifyUtil.isNull1DArray(temp) || temp.length != 4) {
          return false;
        } else {
          for (String s : temp) {
            if (!isNumeric(s)) {
              return false;
            }
          }
        }
      }
    }
    return true;
  }
  public static void main(String[] args) {
    ExcelExportUtil ee = new ExcelExportUtil();
    String[][] content = new String[][] { { "", "第一列", null, "第三列" },
        { "第一行", "aa", "2.00", "22" }, { "第二行", "bb", "3.01", "32" },
        { "第三行", "cc", "4.00", "41" } };
    try {
      OutputStream os = new FileOutputStream("D:/test2.xls");
      // ee.export(null,null, content,null, os);
      ee.export(null, null, content,
          new String[] { "0,1,0,2", "1,0,3,0" }, os, "0,1", "0");
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

VerifyUtil:

package com.excel;
import java.io.OutputStream;
import java.util.Map;
import jxl.write.NumberFormat;
import jxl.write.WritableSheet;
public class VerifyUtil {
  public static boolean isNullObject(String[][] content, OutputStream os) {
    // TODO Auto-generated method stub
    if(content != null && content.length > 0 && os != null)
    {
      return false;
    }
    return true;
  }
  public static boolean isNull2DArray(String[][] content) {
    // TODO Auto-generated method stub
    if(content != null && content.length > 0)
    {
      return false;
    }
    return true;
  }
  public static boolean isNullObject(NumberFormat nf) {
    // TODO Auto-generated method stub
    if(nf != null)
    {
      return false;
    }
    return true;
  }
  public static boolean isNullObject(String sheetName) {
    if(sheetName != null && !"".equals(sheetName.trim()))
    {
      return false;
    }
    return true;
  }
  public static boolean isNullObject(Map<String, String[][]> content,
      OutputStream os) {
    // TODO Auto-generated method stub
    if(content != null && content.size() > 0 && os != null)
    {
      return false;
    }
    return true;
  }
  public static boolean isNull1DArray(String[] mergeInfo) {
    // TODO Auto-generated method stub
    if(mergeInfo != null && mergeInfo.length > 0)
    {
      return false;
    }
    return true;
  }
  public static boolean isNullObject(WritableSheet sheet) {
    // TODO Auto-generated method stub
    if(sheet != null)
    {
      return false;
    }
    return true;
  }
}

更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java操作Excel技巧總結(jié)》、《Java+MySQL數(shù)據(jù)庫(kù)程序設(shè)計(jì)總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java文件與目錄操作技巧匯總》及《Java操作DOM節(jié)點(diǎn)技巧總結(jié)

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • JavaWeb的監(jiān)聽(tīng)器和過(guò)濾器你了解嗎

    JavaWeb的監(jiān)聽(tīng)器和過(guò)濾器你了解嗎

    這篇文章主要為大家詳細(xì)介紹了JavaWeb的監(jiān)聽(tīng)器和過(guò)濾器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • JAVA中讀取文件(二進(jìn)制,字符)內(nèi)容的幾種方法總結(jié)

    JAVA中讀取文件(二進(jìn)制,字符)內(nèi)容的幾種方法總結(jié)

    本篇文章主要介紹了JAVA中讀取文件(二進(jìn)制,字符)內(nèi)容的方法總結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • springcloud gateway 映射失效的解決方案

    springcloud gateway 映射失效的解決方案

    這篇文章主要介紹了springcloud gateway 映射失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • JAVA常用API總結(jié)與說(shuō)明

    JAVA常用API總結(jié)與說(shuō)明

    這篇文章主要介紹了JAVA常用API總結(jié)與說(shuō)明,包括JAVA線程常用API,JAVA隊(duì)列常用API,JAVA泛型集合算法常用API,JAVA并發(fā)常用API需要的朋友可以參考下
    2022-12-12
  • Java基礎(chǔ)知識(shí)之Java語(yǔ)言概述

    Java基礎(chǔ)知識(shí)之Java語(yǔ)言概述

    這篇文章主要介紹了Java基礎(chǔ)知識(shí)之Java語(yǔ)言概述,本文介紹了Java語(yǔ)言相關(guān)的基礎(chǔ)知識(shí)、歷史介紹、主要應(yīng)用方向等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • 基于ChatGPT+SpringBoot實(shí)現(xiàn)智能聊天AI機(jī)器人接口并上線至服務(wù)器的方法

    基于ChatGPT+SpringBoot實(shí)現(xiàn)智能聊天AI機(jī)器人接口并上線至服務(wù)器的方法

    ChatGPT是一款基于自然語(yǔ)言處理技術(shù)的聊天機(jī)器人,ChatGPT可以模擬真實(shí)的人類對(duì)話,并能夠更貼近用戶的需求,提供更有價(jià)值的服務(wù),這篇文章主要介紹了基于ChatGPT+SpringBoot實(shí)現(xiàn)智能聊天AI機(jī)器人接口并上線至服務(wù)器,需要的朋友可以參考下
    2023-02-02
  • SpringBoot對(duì)靜態(tài)資源的映射規(guī)則詳解

    SpringBoot對(duì)靜態(tài)資源的映射規(guī)則詳解

    在Web應(yīng)用中會(huì)涉及到大量的靜態(tài)資源,例如 JS、CSS和HTML等,我們知道,Spring MVC 導(dǎo)入靜態(tài)資源文件時(shí),需要配置靜態(tài)資源的映射,但在 SpringBoot 中則不再需要進(jìn)行此項(xiàng)配置,因?yàn)镾pringBoot已經(jīng)默認(rèn)完成了這一工作,本文給大家介紹了SpringBoot對(duì)靜態(tài)資源的映射規(guī)則詳
    2024-12-12
  • Java中用enum結(jié)合testng實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)的方法示例

    Java中用enum結(jié)合testng實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)的方法示例

    TestNG數(shù)據(jù)驅(qū)動(dòng)提供的參數(shù)化讓我們?cè)跍y(cè)試項(xiàng)目可以靈活根據(jù)需求建立不同的dataprovider來(lái)提供數(shù)據(jù),而真正實(shí)現(xiàn)數(shù)據(jù),頁(yè)面,測(cè)試彼此獨(dú)立而又有機(jī)結(jié)合的可能性。 下面這篇文章主要給大家介紹了Java中用enum和testng做數(shù)據(jù)驅(qū)動(dòng)的方法示例,需要的朋友可以參考借鑒。
    2017-01-01
  • Java實(shí)現(xiàn)導(dǎo)出pdf格式文件的示例代碼

    Java實(shí)現(xiàn)導(dǎo)出pdf格式文件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)導(dǎo)出pdf格式文件的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • SpringBoot如何實(shí)現(xiàn)word文檔轉(zhuǎn)pdf

    SpringBoot如何實(shí)現(xiàn)word文檔轉(zhuǎn)pdf

    這篇文章主要介紹了SpringBoot如何實(shí)現(xiàn)word文檔轉(zhuǎn)pdf,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論

错那县| 乌拉特前旗| 博湖县| 怀安县| 宝丰县| 北碚区| 姚安县| 怀化市| 剑川县| 瑞丽市| 宝鸡市| 凤冈县| 德钦县| 班玛县| 泊头市| 红桥区| 郓城县| 贵港市| 沿河| 德安县| 孙吴县| 左权县| 托克逊县| 兰西县| 平谷区| 西安市| 海原县| 兴宁市| 鹤山市| 安阳县| 大城县| 犍为县| 修水县| 中宁县| 都昌县| 大关县| 什邡市| 名山县| 灵丘县| 鄱阳县| 玉林市|