最新公告
  • 欢迎您光临欧资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 使用Java获取excel数据表

    获取工作薄里的数据,可以使用Java poi提供的workbook类来操作

    读取一个 Wookbook中数据

    读取工作簿中的内容大致分为下列几个步骤:

    • 使用 WorkbookFactory新建一个工作簿( Wookbook
    1. InputStream resourceAsStream = SaveData.class.getClassLoader().getResourceAsStream("data.xls");//通过类加载器获取本地文件
    2. Workbook workbook = WorkbookFactory.create(resourceAsStream);
    • 获取给定索引处的 Sheet对象。
    1. Sheet sheet = workbook.getSheetAt(0);//拿到Wookbook中的第一个Sheet

    注意:一个wookbook可能存在多个sheet,因此需要指定索引。

    • 通过 Sheet对象获取指定行和行内单元格。
    1. Row row = sheet.getRow(1);//首行一般为说明,因此我们直接从第一行进行获取
    2. Cell cell = row.getCell(0);//获取当前行第一个单元格
    //1.获取第一行中trip_id列的第一个值(33404951)
    double numericCellValue = row.getCell(0).getNumericCellValue();
    DecimalFormat formatter = new DecimalFormat(“########”);//一个#表示一个数字
    String trip_id =formatter.format(numericCellValue);//我们需要使用DecimalFormat将数据格式化
    //2.获取第一行中开始时间单元格的值
    FastDateFormat instance = FastDateFormat.getInstance(“MM/dd/yyyy HH:mm”);
    String beginTimeValue = row.getCell(1).getStringCellValue();
    //为了方便后面的数据分析计算我们将需要将时间格式转为时间戳
    long begintime = instance.parse(beginTimeValue).getTime();
    //3.获取第一行开始经度单元格的值
    double start_longitude = row.getCell(7).getNumericCellValue();
    DecimalFormat formatter = new DecimalFormat(“###.######”);//#表示一个数字,不包括0
    String longitude = formatter.format(start_longitude);
    • 获取当前 <span class="pln">sheet</span></code>中的物理定义行数</li>
      </ul>
      <ol class="linenums">
      <li class="L0"><code><span class="com">//为了完整的将整个Sheet中的数据全部存储,我们需要知道整个Sheet中有多少条数据,然后对其遍历</span></code></li>
      <li class="L1"><code><span class="kwd">int</span><span class="pln"> rows </span><span class="pun">=</span><span class="pln"> sheet</span><span class="pun">.</span><span class="pln">getPhysicalNumberOfRows</span><span class="pun">();</span></code></li>
      </ol>
      <p><span style="color: #800000;">测试:</span></p>
      <p>获取data.xls文件中的数据(trip_id,开始时间,结束经度,车辆,ID)</p>
      <p>文件格式如下:</p>
      <!– wp:table {“className”:”is-style-stripes”} –>
      <figure class=“wp-block-table is-style-stripes”><table class=“”><thead><tr><th>trip_id</th><th>开始时间</th><th>结束时间</th><th>车辆id</th><th>出发地</th><th>目的地</th><th>所在城市</th><th>开始经度</th><th>开始纬度</th><th>结束经度</th><th>结束纬度</th></tr></thead><tbody><tr><td>33404951</td><td>7/1/2017 0:09</td><td>7/1/2017 0:45</td><td>5996</td><td>韩庄村北782米</td><td>韩庄村北782米</td><td>河北省保定市雄县</td><td>39.043732</td><td>116.260139</td><td>39.043732</td><td>116.260139</td></tr><tr><td>33463211</td><td>7/1/2017 1:01</td><td>7/1/2017 11:13</td><td>6342</td><td>韩庄村北782米</td><td></td><td></td><td>39.043732</td><td>116.260139</td><td>NA</td><td>NA</td></tr><tr><td>33415440</td><td>7/1/2017 1:59</td><td>7/1/2017 2:12</td><td>6273</td><td>擎天矿用材料有限公司北609米</td><td>河北省保定市雄县G45(大广高速)</td><td>河北省保定市雄县G45(大广高速)</td><td>39.041691</td><td>116.235352</td><td>39.044701</td><td>116.252441</td></tr></tbody></table></figure>
      <!– /wp:table –><p>tips:由于表中有非法数据,所以需要抛出异常。</p>
      <pre class=“EnlighterJSRAW” data-enlighter-language=“java”>import java.io.InputStream;
      import java.text.DecimalFormat;
      import org.apache.commons.lang3.time.FastDateFormat;
      import org.apache.poi.ss.usermodel.Cell;
      import org.apache.poi.ss.usermodel.Row;
      import org.apache.poi.ss.usermodel.Sheet;
      import org.apache.poi.ss.usermodel.Workbook;
      import org.apache.poi.ss.usermodel.WorkbookFactory;
      public class SaveWookbook {
      public static void main(String[] args) throws Exception {
      //1.通过类加载器获取本地文件并新建一个工作簿
      InputStream resourceAsStream = SaveWookbook.class.getClassLoader().getResourceAsStream(“data.xls”);
      Workbook workbook = WorkbookFactory.create(resourceAsStream);
      //2.拿到工作簿中第一个Sheet
      Sheet sheet = workbook.getSheetAt(0);
      //3.获取当前Sheet中的行数
      int rows = sheet.getPhysicalNumberOfRows();
      //4.对所有有效数据进行遍历并输出(期间无效数据通过异常捕获方式清除)
      for (int n = 1; n < rows; n++) {
      Row row = sheet.getRow(n);
      //通过异常方式清除格式不准确、数据不存在的无效行
      try {
      //trip_id
      DecimalFormat formatter1 = new DecimalFormat(“########”);
      String trip_id = formatter1.format(row.getCell(0).getNumericCellValue());
      //开始时间
      FastDateFormat instance = FastDateFormat.getInstance(“MM/dd/yyyy HH:mm”);
      String beginTimeValue = row.getCell(1).getStringCellValue();
      long begintime = instance.parse(beginTimeValue).getTime();
      //车辆id
      int car_id = (int)row.getCell(3).getNumericCellValue();
      //结束经度
      double start_longitude = row.getCell(9).getNumericCellValue();
      DecimalFormat formatter2 = new DecimalFormat(“###.######”);//#表示一个数字,不包括0
      String longitude = formatter2.format(start_longitude);
      System.out.println(“骑行id:”+trip_id+”,开始时间:”+begintime+”,车辆id:”+car_id+”,结束经度:”+longitude);
      } catch (Exception e) {
      }
      }
      }
      }

     

    站内大部分资源收集于网络,若侵犯了您的合法权益,请联系我们删除!
    欧资源网 » 使用Java获取excel数据表

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    欧资源网
    一个高级程序员模板开发平台

    发表评论