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

Java實(shí)現(xiàn)操作excel表格

 更新時(shí)間:2015年10月09日 08:41:42   投稿:hebedich  
在日常工作中,對(duì)Excel工作表格的操作處理可是多的數(shù)不清楚,下面是java語(yǔ)言對(duì)其的操作,有需要的小伙伴可以參考下

  最近老師布置了個(gè)任務(wù),用Java對(duì)excel后綴名為xlsx的文件進(jìn)行簡(jiǎn)單的增,刪,改,查操作;雖說(shuō)是個(gè)簡(jiǎn)單的程序,可作為剛接觸的我來(lái)說(shuō)還是有些磕磕碰碰。不過(guò)好在還是完成了,進(jìn)行一個(gè)簡(jiǎn)單的總結(jié)。

  首先導(dǎo)入了一個(gè)poi.jar 網(wǎng)上有很多這個(gè)資源可以下載

XSSFSheet sheet=null;
XSSFWorkbook book=null;

一:查  (查找本地指定位置的excel表格,在控制臺(tái)輸出) 

public void print_excel(){

  //獲取excel表格的行數(shù)
  int lastrownumber = sheet.getLastRowNum();
  String ret=" ";
  //獲取數(shù)據(jù)
  for(a=0;a<lastrownumber;a++){
    XSSFRow row=sheet.getRow(a);
    //獲取excel表格的列數(shù)
    int lastcellnum=row.getLastCellNum();
    for(b=0;b<lastcellnum;b++){

      XSSFCell cell =row.getCell(b);

      //判斷cell返回的類型并賦值給ret
      ret=excel_operation.getExcelCellValue(cell);
      System.out.print(ret+" ");
    }
  System.out.println();
  } 
}

二:改 (修改excel表格中某一單元格的內(nèi)容)

public void set_excelcell(int i,int j,String str){
  //獲取行的信息
  XSSFRow row=sheet.getRow(i-1);
  //獲取列的信息
  XSSFCell cell =row.getCell(j-1);
  //獲取被修改單元格的內(nèi)容
  String string = excel_operation.getExcelCellValue(cell);
  //修改單元格的內(nèi)容為str
  cell.setCellValue(str);
  System.out.println("已將"+string+"改為"+str);
}

三:增 (在excel表格中插入一行內(nèi)容到指定位置)

public void insert(int rowIndex, String[] objs) { 
  if(rowIndex == 0) { 
    throw new IllegalArgumentException("不能插在第0行,第0行是用來(lái)定義的!"); 
  } 
  if(rowIndex > sheet.getLastRowNum() + 1) { 
    throw new IllegalArgumentException("最多只能插入在最后一行的后面。"); 
  } 
  int referRowIndex = -1; //參考行的行號(hào)。 
  if(sheet.getPhysicalNumberOfRows() <= 1) { 

    referRowIndex = rowIndex - 1; 
  } else { 
    referRowIndex = rowIndex - 1; 
  if(rowIndex == sheet.getLastRowNum() + 1) { //是插入最后一行 
    //不做任何處理 
  } else { 

    //往下移動(dòng)一位 
    sheet.shiftRows(rowIndex, sheet.getLastRowNum(), 1, true, false); 
    } 
  } 
  Row targetRow = sheet.createRow(rowIndex); 
  Row referRow = sheet.getRow(referRowIndex); // 參考行 
  Cell targetCell, referCell; 

  for (int i = 0; i < objs.length; i++) { 
  targetCell = targetRow.createCell(i); 
  referCell = referRow.getCell(i); 

  targetCell.setCellStyle(referCell.getCellStyle()); 
  targetCell.setCellType(referCell.getCellType()); 

  targetCell.setCellValue(objs[i]);// 設(shè)置值 
  } 
}

四: 刪 (刪除指定行的內(nèi)容)

// 刪除一行數(shù)據(jù)(Excel表中,行是從0起算的) 
  public void delete(int rowIndex) {

  //刪除的是最后一行 
  if(rowIndex == sheet.getLastRowNum()) { 
    sheet.removeRow(sheet.getRow(sheet.getLastRowNum()));

  //刪除的不是最后一行 
  } else { 
    sheet.shiftRows(rowIndex + 1, sheet.getLastRowNum(), -1, true, false); 
    sheet.removeRow(sheet.getRow(sheet.getLastRowNum() + 1)); 
  } 
}

五: 判斷返回類型  (因?yàn)閑xcel表格中的內(nèi)容不同,有字符型的,有整數(shù)型的等等,必須進(jìn)行判斷其類型才能進(jìn)行輸出)

private static String getExcelCellValue(XSSFCell cell) {
  String ret=" ";
  try {
    //當(dāng)返回值的類型為空返回空格
    if (cell == null) {
      ret = " "; 
    //當(dāng)返回值的類型為字符串類型
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) {
      ret = cell.getStringCellValue();

    //當(dāng)返回值的類型為數(shù)值類型 
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {
      ret = "" + cell.getNumericCellValue();

    //當(dāng)返回值的類型為表達(dá)式類型
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_FORMULA) {
      ret = cell.getCellFormula();

    //當(dāng)返回值的類型為異常類型
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_ERROR) {
      ret = " " + cell.getErrorCellValue();

    //當(dāng)返回值的類型為布爾類型
     } else if (cell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) {
      ret = " " + cell.getBooleanCellValue();

    //當(dāng)返回值的類型為空的時(shí)候
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_BLANK) {
    ret = " ";
    }
  } catch (Exception ex) {
    ex.printStackTrace();
  ret = " ";
  }
  return ret;
}

相關(guān)文章

  • 一文帶你掌握J(rèn)ava8中Lambda表達(dá)式 函數(shù)式接口及方法構(gòu)造器數(shù)組的引用

    一文帶你掌握J(rèn)ava8中Lambda表達(dá)式 函數(shù)式接口及方法構(gòu)造器數(shù)組的引用

    Java 8 (又稱為 jdk 1.8) 是 Java 語(yǔ)言開(kāi)發(fā)的一個(gè)主要版本。 Oracle 公司于 2014 年 3 月 18 日發(fā)布 Java 8 ,它支持函數(shù)式編程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等
    2021-10-10
  • java8 toMap問(wèn)題(key重復(fù)如何解決)

    java8 toMap問(wèn)題(key重復(fù)如何解決)

    這篇文章主要介紹了java8 toMap問(wèn)題(key重復(fù)如何解決),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • springboot后端配置多個(gè)數(shù)據(jù)源、Mysql數(shù)據(jù)庫(kù)的便捷方法

    springboot后端配置多個(gè)數(shù)據(jù)源、Mysql數(shù)據(jù)庫(kù)的便捷方法

    實(shí)現(xiàn)springboot 后端配置多個(gè)數(shù)據(jù)源、Mysql數(shù)據(jù)庫(kù),只需要新建 Mapper、實(shí)體類 相應(yīng)的文件夾,將不同數(shù)據(jù)源的文件保存到對(duì)應(yīng)的文件夾下,添加綁定數(shù)據(jù)庫(kù)配置Config,就可以輕松完成
    2021-08-08
  • Java多線程高并發(fā)中解決ArrayList與HashSet和HashMap不安全的方案

    Java多線程高并發(fā)中解決ArrayList與HashSet和HashMap不安全的方案

    ArrayList實(shí)現(xiàn)了可變大小的數(shù)組。它允許所有元素,包括null。ArrayList沒(méi)有同步,HashMap和Hashtable類似,不同之處在于HashMap是非同步的,并且允許null,關(guān)于HashSet有一件事應(yīng)該牢記,即就條目數(shù)和容量之和來(lái)講,迭代是線性的,接下來(lái)讓我們?cè)敿?xì)來(lái)了解吧
    2021-11-11
  • 解決Spring或SpringBoot開(kāi)啟事務(wù)以后無(wú)法返回自增主鍵的問(wèn)題

    解決Spring或SpringBoot開(kāi)啟事務(wù)以后無(wú)法返回自增主鍵的問(wèn)題

    這篇文章主要介紹了解決Spring或SpringBoot開(kāi)啟事務(wù)以后無(wú)法返回自增主鍵的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java中線程的sleep()方法和yield()方法的區(qū)別

    java中線程的sleep()方法和yield()方法的區(qū)別

    本文主要介紹了java中線程的sleep()方法和yield()方法的區(qū)別,Thread類的sleep()方法使線程休眠指定時(shí)間,不釋放鎖,而yield()提示調(diào)度器當(dāng)前線程愿意讓出CPU資源,不保證立即切換線程,感興趣的可以了解一下
    2024-10-10
  • 一文詳解Lombok中@ToString()的使用技巧

    一文詳解Lombok中@ToString()的使用技巧

    在平時(shí)我們工作的時(shí)候,我們經(jīng)常會(huì)使用toString()?方法來(lái)輸出一個(gè)對(duì)象的一些屬性信息。Lombok?給我們提供了一個(gè)自動(dòng)生成?toString()代碼的注解,可以減少代碼行數(shù),本文就來(lái)和大家詳細(xì)聊聊吧
    2023-02-02
  • Java中方法名稱和泛型相同的用法示例

    Java中方法名稱和泛型相同的用法示例

    這篇文章主要介紹了Java中方法名稱和泛型相同的用法,結(jié)合實(shí)例形式分析了泛型替代方法名稱的相關(guān)使用技巧,需要的朋友可以參考下
    2019-08-08
  • 劍指Offer之Java算法習(xí)題精講求和篇

    劍指Offer之Java算法習(xí)題精講求和篇

    跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • SpringMVC用JsonSerialize日期轉(zhuǎn)換方法

    SpringMVC用JsonSerialize日期轉(zhuǎn)換方法

    下面小編就為大家?guī)?lái)一篇SpringMVC用JsonSerialize日期轉(zhuǎn)換方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起 小編過(guò)來(lái)看看吧
    2016-11-11

最新評(píng)論

麻栗坡县| 苏尼特左旗| 泽普县| 安吉县| 辉县市| 天门市| 淮阳县| 淮阳县| 饶阳县| 称多县| 黎平县| 邹城市| 宣恩县| 改则县| 夹江县| 延寿县| 阳江市| 错那县| 岳普湖县| 织金县| 巨野县| 措勤县| 西城区| 深泽县| 天津市| 巴林左旗| 锡林浩特市| 巴马| 七台河市| 鄂托克旗| 承德县| 托里县| 平塘县| 新蔡县| 句容市| 遵化市| 广安市| 安图县| 榆中县| 苍溪县| 海盐县|