中企动力 > 商学院 > java如何读取excel
  • ?

    Java读取TXT文件的方法

    雅琴

    展开

    java读取txt文件内容。可以作如下理解:

    首先获得一个文件句柄。File file = new File(); file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。

    通过这条线路读取甲方的信息:new FileInputStream(file) 目前这个信息已经读进来内存当中了。接下来需要解读成乙方可以理解的东西

    既然你使用了FileInputStream()。那么对应的需要使用InputStreamReader()这个方法进行解读刚才装进来内存当中的数据

    解读完成后要输出呀。那当然要转换成IO可以识别的数据呀。那就需要调用字节码读取的方法BufferedReader()。同时使用bufferedReader()的readline()方法读取txt文件中的每一行数据哈。

    package com.campu; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.Reader; /** * @author Java团长 * H20121012.java Java学习交流QQ群:589809992 我们一起学Java! * 2017-09-26下午18:52 */ public class H20121012 { /** * 功能:Java读取txt文件的内容 * 步骤:1:先获得文件句柄 * 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取 * 3:读取到输入流后,需要读取生成字节流 * 4:一行一行的输出。readline()。 * 备注:需要考虑的是异常情况 * @param filePath */ public static void readTxtFile(String filePath){ try { String encoding="GBK"; File file=new File(filePath); if(file.isFile() && file.exists()){ //判断文件是否存在 InputStreamReader read = new InputStreamReader( new FileInputStream(file),encoding);//考虑到编码格式 BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while((lineTxt = bufferedReader.readLine()) != null){ System.out.println(lineTxt); } read.close(); }else{ System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("读取文件内容出错"); e.printStackTrace(); } } public static void main(String argv[]){ String filePath = "L:\\Apache\\htdocs\\res\\20121012.txt"; // "res/"; readTxtFile(filePath); } }

  • ?

    java怎么读取数组中的最后一个数

    离落

    展开

    数组中的索引是从0开始算的,那么就简单了,直接读取(数组长度-1)处的元素就是数组中的最后一个数了,代码如下:

    public class Test {
    \x09public static void main(String[] args) {
    \x09\x09int[] a = {1, 3, 5, 6};
    \x09\x09System.out.println("数组最后一个数为: " + a[a.length - 1]);
    \x09}
    }

    (本文内容由百度知道网友liuyang054贡献)

  • ?

    如何用PHP读取excel文件内容、获取单元格数据

    祈祷

    展开

    涉及相关知识点:

    ①PHPExcel是用来操作Office Excel 文档的一个PHP类库,它基于微软的Openxml标准和PHP语言。可以使用它来读取、写入不同格式的电子表格。

    ②time() 返回当前时间的秒数的函数,用来获取当前的系统时间

    ③require_once 为了避免重复加载文件即加载文件一次

    ④array()创建数组

    ⑤memory_get_usage()php内置函数能返回当前分配给PHP脚本的内存量,使用它来调试PHP代码性能

    ⑥var_dump() 用来打印数组,或者输出字符串

    php读取excel文件,并进行相应处理的具体方法

    代码示例如下:

    $fileName = "url.xls";

    if (!file_exists($fileName)) {

    exit("文件".$fileName."不存在");

    }

    $startTime = time(); //返回当前时间的Unix 时间戳

    require_once './PHPExcel/IOFactory.php';

    $objPHPExcel = PHPExcel_IOFactory::load($fileName);

    //获取sheet表格数目

    $sheetCount = $objPHPExcel->getSheetCount();

    //默认选中sheet0表

    $sheetSelected = 0;$objPHPExcel->setActiveSheetIndex($sheetSelected);

    //获取表格行数

    $rowCount = $objPHPExcel->getActiveSheet()->getHighestRow();

    //获取表格列数

    $columnCount = $objPHPExcel->getActiveSheet()->getHighestColumn();

    echo "

    Sheet Count : ".$sheetCount." 行数: ".$rowCount." 列数:".$columnCount."

    ";

    $dataArr = array();

    //行数循环

    for ($row = 1; $row <= $rowCount; $row++){

    //列数循环 , 列数是以A列开始

    for ($column = 'A'; $column <= $columnCount; $column++) {

    $dataArr[] = $objPHPExcel->getActiveSheet()->getCell($column.$row)->getValue();

    echo $column.$row.":".$objPHPExcel->getActiveSheet()->getCell($column.$row)->getValue()."
    ";

    }

    echo "
    消耗的内存为:".(memory_get_peak_usage(true) / 1024 / 1024)."M";

    $endTime = time();

    echo "

    解析完后,当前的时间为:".date("Y-m-d H:i:s")."

    总共消耗的时间为:".(($endTime - $startTime))."秒

    ";

    var_dump($dataArr);

    $dataArr = NULL;}

  • ?

    R学习笔记系列—R语言从文本和Excel文件中读取数据

    忆文

    展开

    1.4.1 从文本文件中导入数据

    可以使用 read.table() 函数从带分隔符的文本文件中导入数。调用格式为:

    这个函数看上去很复杂,但其实很多参数在使用时不用明确指出来,使用默认值可以满足绝大部分情况,因此实际使用还是比较简单的,下面我们简单介绍一下参数含义。

    file: 字符型,文件名称,要从中读取文件的完整路径。

    header: 逻辑型,指定是否在首行包含变量名,默认为 FALSE。

    sep: 字符型,分割字符,默认为"",代表空白字符,包括空格(一个或多个)、制表符、 换行符、回车

    dec: 字符型,指定小数点字符,默认为".",一般不用修改。

    numerals: 字符型,在数字转换会损失精度时的处理方法,allow.loss 表示允许精度损失;warn.loss 允许精度损失,但显示一条警告信息;no.loss 不允许精度损失,即转换为数字,而是转换为因子或者不转换,保留字符串形式。

    row.names 字符向量,为行指定名称。

    col.names 字符向量,为列指定名称,若列名在第一行定义好了,可不用。

    stringAsFactors: 逻辑型,是否将字符串自动编码为因子,默认为 TRUE。

    na.strings: 字符向量,定义代表缺失值的字符串,比如c("N",".")会将 "N" 和"." 两个字符读取为缺失值,默认为 "NA"。

    colClasses: 字符向量为列指定类型,比如c("numeric","character")指定第一列为数值型,第二列为字符型,若将某列指定为字符串,则不会将其自动编码为因子。

    nrows: 数值型,读取的最大行数,负数为不限制。

    skip: 数值型,读取前跳过的行数。

    check.names: 逻辑型,是否检查变量名在 R 中的有效性,默认为 TRUE。

    fill: 逻辑型,是否自动填充空白值,若各变量行数不一致,是否为空白列添加空白值。

    strip.white: 逻辑型,是否自动过滤掉字符型变量前后的空格。

    comment.char: 字符型,注释字符,以此字符开头的行将被忽略。

    blank.lines.skip 逻辑型,是否忽略空白行,默认为 TRUE。

    allowEscapes: 逻辑型,是否处理 C 语言风格的转意符。

    text: 字符型,直接指定要读取的字符串,此时 file 应该为空。

    encoding: 字符型,输入文本的编码,若出现乱码,请尝试更改此选项。

    fileEncoding: 字符型,文件编码,若出现乱码,请尝试更改此选项。

    假定我们有一个文本文件,students.txt,记录了6个学生的性别、身高和体重情况,其内容如下:

    那么我们可以用以下方式读取:

    read.table() 是读取按行列组织的数据的基础方式,其它同类函数,比如 read.csv() 等其实是用特定的选项调用了 read.table() 函数。在 read.table() 函数时,应尽量注意以下几点。

    1.建议明确地在首行定义变量名,并加上参数 header = TRUE。

    2.默认的分隔符为"",可以用空格、制表符、换行符等空白字符分割内容,若非空白分割,则需明确指出。

    3.字符型变量会被自动转换为因子型,在读大型文件时,将 stringsAsFactors 设置为 False,能加快读取速度。

    4.默认情况下,read.table 用 # 作为注释标识字符。如果碰到该字符(除了在被引用的字符串内),该行中随后的内容将会被忽略。

    5.read.table()会尽量为每个变量选择合适的数据类型,若你想明确指定请用colClasses,或者生成后根据需要修改。

    6.若读中文时出现乱码,请尝试改变编码

    1.4.2 从 Excel 表格中读取

    从 Excel 里读取数据最简单的办法就是将 Excel 表格存储为以逗号分割的 csv 文件,然后用 read.csv() 函数读取。read.csv() 函数其实就是 read.table() 的定制版,其用法与 read.table() 基本一致。

    若要直接读取 Excel 文件,则需安装专门的包,本书推荐 readxl 包。

    readxl 中有若干读取 Excel 数据的函数,最常用的是 read.excel()。调用格式为:

    path: 字符型,文件路径sheet: 字符型或数值型。若为字符型,则指定 Sheet 名;若为数值,则指定 Sheet 的位置;若不指定,默认第一个Sheetrange: 字符型或数值型,读取的单元格范围,比较复杂,请查看文档col_names: 逻辑型或字符型向量;若为逻辑型,则指定是否将第一行作为变量名;若为字符向量,则直接定义各列名col_types: 字符型向量,定义各列数据类型,比如c("numeric","character");若不指定,则自动匹配na: 字符型向量,指定读取为缺失值的字符串 ,默认情况下,会将空单元格读取为缺失值trim_ws: 逻辑型,是否自动过滤掉字符型变量前后的空白(空格、制表符、换行符skip: 数值型,读取前跳过的行数,因为空白的行会自动跳过,所以这是最小的被跳过的行数n_max: 数值型,最大读取行数guess_max: 数值型,猜测列类别时,检测的最大行数

    假如,在 d 盘有一名为 students.xls 的 Excel 文件,你可以通过如下方式读取。

    喜欢闲适安静的生活,懂一点计算机编程,懂一点统计学和数据分析。(爱编程爱统计)

  • ?

    python初学之xlrd读取excel

    铃铛

    展开

            最近工作有个需求,把一个几十万的excel表格分开为若干小表格,每个表格5000条数据。手动分开的话浪费大量的时间,而且以后还有可能有类似需求。正好前段时间学习了下python的基础语法,打算用python写个小工具代替手动操作。

            经过各种百度,发现python操作excel还是比较简单的。现在记录如下,本文章只适合python小白阅读,大神们请绕道。

           

    开发工具PyCharm镇楼

    工作数据涉及机密,从网上随便下了个成语的excel文件

    首先安装xlrd,我的已经安装好了,所以提示是这样的。

    读取E盘下的chengxu.xlsx文件,并打印下第一个sheet页的行数。还是很简单的

    正式开始读取excel,打印第一行表头,和第二行的正式数据

    1万多条数据作死打印下,效率还行。学会读取了,下一步该excel就可以随意玩了。

  • ?

    Java中如何高效的读取大文件

    唯一

    展开

    在java编程中, 我想大部分小伙伴都在使用BufferReader,那么是否有更高效的读取方式呢?

    Java IO包的更新为我们的带来了更高的效率.

    这里我会用1GB的文件测试,来对比一下几种方法的性能差异:

    使用Java BufferReader

    Max Memory Used : 258MB

    Time Take : 100 Seconds

    使用Java8 Stream API

    Max Memory Used :390M

    BTime Take : 60 Seconds

    使用Java Scanner

    Max Memory Used : 460MB

    Time Take : 60 Seconds

    使用Apache common IO

    Max Memory Used :400MB

    Time Take : 60 Seconds

    从上面的测试中我们可以得出结论:

    BufferReader效率是最低的,如果可以,还是换掉它吧.

  • ?

    PHPexcel读取excel数据

    爱唯久

    展开

    PHPExcel是一个PHP类库,用来帮助我们简单、高效实现从Excel读取Excel的数据和导出数据到Excel。也是我们日常开发中,经常会遇到的使用场景。PHPExcel可以快速导入客户信息,避免人工录入信息的麻烦。这里分享下读取数据的过程

    1. 下载PHPexcel, 我这里下载的PHPExcel-1.8

    2. 将下载的文件解压缩拷贝到项目目录中,如图:

    3. 准备好要读取的excel文件,如图:

    4. 加载PHPexcel文件并读取数据:

    5. 读取结果如下:

  • ?

    SpreadJS ExcelIO实现服务器端Excel导入导出

    伊斯奈斯

    展开

    SpreadJS在V10版本后推出了纯前端的Excel导入导出,这个功能可以很方便的实现客户端的Excel导入导出,但是如果用户需要导入导出到浏览器端又该怎么办呢?其实纯前端的Excel导入导出同样可以实现服务器端的Excel导入导出。下面让我们来看一下是如何实现的:

    本示例的后端使用JAVA语言,通过SpreadJS的前端导出导出与JAVA后端结合,实现分从服务器端导入Excel与导出Excel保存至服务器端这两个功能:

    从服务器端导入Excel:

    这部分使用纯前端实现,纯前端实现有一个弊端就是,浏览器没有权限访问服务器上工程目录以外的路径,所以需要将服务器端的Excel放入工程目录下。然后下载到前端直接打开,核心代码如下:

    导出Excel保存至服务器端:

    这部分使用前端导出功能与后端java结合的方式来实现,首先通过前端Excel导出,生成导出文件,然后通过formdata来承载导出文件,之后通过ajax将formdata传至后端java。后端java使用文件操作将文件保存至服务器端。

    这里有以下需要注意的地方:

    formdata没有办法改变enctype,而我们需要的用entype为multipart/form-data类型的form来承载导出文件。这里需要在jsp页面上创建一个空的form,并将其entype设置为multipart/form-data:

    之后js中只需要初始化一个该form的formdata实例即可:

    var fd = new FormData(document.forms.namedItem("myform"));

    以上就是核心的部分代码以及原理。

    了解更多

    SpreadJS是 Spread 表格开发系列产品之一。该产品是葡萄城公司出品的一系列功能和 Excel 类似的表格工具,支持桌面、Web 和移动平台开发,用于在应用系统中实现 Excel 导入导出、表格数据录入和编辑等交互功能,并提供灵活的定制能力和丰富的数据可视化效果。

    Spread 是目前市面上最接近 Excel 的表格开发工具,无论是界面、函数还是布局,都与 Excel 高度接近,正被华为、东软、中国平安、河海大学、中通快递、普华永道、魔方网表、思源软件等企业应用于项目开发中。

    除了纯前端的SpreadJS,该系列产品还包括 .NET 平台可用的Spread Studio,和服务器端批量操作Excel的Spread表格组件,敬请登陆官网了解更多:http://gcpowertools/

    关于葡萄城

    葡萄城成立于1980年,是全球最大的控件提供商,世界领先的企业应用定制工具、企业报表和商业智能解决方案提供商,为超过75%的全球财富500强企业提供服务。葡萄城于1988年在中国设立研发中心,在全球化产品的研发过程中,不断适应中国市场的本地需求,并为软件企业和各行业的信息化提供优秀的软件工具和咨询服务。

  • ?

    一行代码完成Java的Excel读写

    心恒动

    展开

    前段时间在 github 上发现了阿里的 EasyExcel 项目,觉得挺不错的,就写了一个简单的方法封装,做到只用一个函数就完成 Excel 的导入或者导。刚好前段时间更新修复了一些 BUG,就把我的这个封装分享出来,请多多指教。

    附上源码:

    https://github/HowieYuan/easyexcel-method-encapsulation

    EasyExcel

    EasyExcel 的 github 地址:

    https://github/alibaba/easyexcel

    EasyExcel 的官方介绍:

    可以看到 EasyExcel 最大的特点就是使用内存少,当然现在它的功能还比较简单,能够面对的复杂场景比较少,不过基本的读写完全可以满足。

    一. 依赖

    首先是添加该项目的依赖,目前的版本是 1.0.2。

    com.alibabaeasyexcel1.0.2

    二. 需要的类

    1. ExcelUtil

    工具类,可以直接调用该工具类的方法完成 Excel 的读或者写。

    2. ExcelListener

    监听类,可以根据需要与自己的情况,自定义处理获取到的数据,我这里只是简单地把数据添加到一个 List 里面。

    publicclassExcelListenerextendsAnalysisEventListener {//自定义用于暂时存储data。//可以通过实例获取该值private List datas = new ArrayList<>();/** * 通过 AnalysisContext 对象还可以获取当前 sheet,当前行等数据 */ @Overridepublicvoidinvoke(Object object, AnalysisContext context) {//数据存储到list,供批量处理,或后续自己业务逻辑处理。 datas.add(object);//根据自己业务做处理 doSomething(object); }privatevoiddoSomething(Object object) { } @OverridepublicvoiddoAfterAllAnalysed(AnalysisContext context) { }public List getDatas() {return datas; }publicvoidsetDatas(List datas) {this.datas = datas; }}

    3. ExcelWriterFactroy

    用于导出多个 sheet 的 Excel,通过多次调用 write 方法写入多个 sheet。

    4. ExcelException

    捕获相关 Exception。

    三. 读取 Excel

    读取 Excel 时只需要调用 ExcelUtil.readExcel() 方法:

    @RequestMapping(value = "readExcel", method = RequestMethod.POST)public Object readExcel(MultipartFile excel) {return ExcelUtil.readExcel(excel, new ImportInfo());}

    其中 excel 是 MultipartFile 类型的文件对象,而 new ImportInfo() 是该 Excel 所映射的实体对象,需要继承 BaseRowModel 类,如:

    publicclass ImportInfo extends BaseRowModel {@ExcelProperty(index = 0)privateString name;@ExcelProperty(index = 1)privateString age;@ExcelProperty(index = 2)privateString email;publicString getName() {return name; }publicvoid setName(String name) {this.name = name; }publicString getAge() {return age; }publicvoid setAge(String age) {this.age = age; }publicString getEmail() {return email; }publicvoid setEmail(String email) {this.email = email; }}

    作为映射实体类,通过 @ExcelProperty 注解与 index 变量可以标注成员变量所映射的列,同时不可缺少 setter 方法。

    四. 导出 Excel

    1. 导出的 Excel 只拥有一个 sheet

    只需要调用 ExcelUtil.writeExcelWithSheets() 方法:

    @RequestMapping(value = "writeExcel", method = RequestMethod.GET)publicvoidwriteExcel(HttpServletResponse response) throws IOException { List list = getList(); String fileName = "一个 Excel 文件"; String sheetName = "第一个 sheet"; ExcelUtil.writeExcel(response, list, fileName, sheetName, new ExportInfo()); }

    fileName,sheetName 分别是导出文件的文件名和 sheet 名,new ExportInfo() 为导出数据的映射实体对象,list 为导出数据。

    对于映射实体类,可以根据需要通过 @ExcelProperty 注解自定义表头,当然同样需要继承 BaseRowModel 类,如:

    publicclass ExportInfo extends BaseRowModel {@ExcelProperty(value = "姓名" ,index = 0)privateString name;@ExcelProperty(value = "年龄",index = 1)privateString age;@ExcelProperty(value = "邮箱",index = 2)privateString email;@ExcelProperty(value = "地址",index = 3)privateString address;}

    value 为列名,index 为列的序号。

    如果需要复杂一点,可以实现如下图的效果:

    对应的实体类写法如下:

    publicclass MultiLineHeadExcelModel extends BaseRowModel {@ExcelProperty(value = {"表头1","表头1","表头31"},index = 0)privateString p1;@ExcelProperty(value = {"表头1","表头1","表头32"},index = 1)privateString p2;@ExcelProperty(value = {"表头3","表头3","表头3"},index = 2)private int p3;@ExcelProperty(value = {"表头4","表头4","表头4"},index = 3)private long p4;@ExcelProperty(value = {"表头5","表头51","表头52"},index = 4)privateString p5;@ExcelProperty(value = {"表头6","表头61","表头611"},index = 5)privateString p6;@ExcelProperty(value = {"表头6","表头61","表头612"},index = 6)privateString p7;@ExcelProperty(value = {"表头6","表头62","表头621"},index = 7)privateString p8;@ExcelProperty(value = {"表头6","表头62","表头622"},index = 8)privateString p9;}

    2. 导出的 Excel 拥有多个 sheet

    调用 ExcelUtil.writeExcelWithSheets() 处理第一个 sheet,之后调用 write() 方法依次处理之后的 sheet,最后使用 finish() 方法结束。

    publicvoidwriteExcelWithSheets(HttpServletResponse response) throws IOException { List list = getList(); String fileName = "一个 Excel 文件"; String sheetName1 = "第一个 sheet"; String sheetName2 = "第二个 sheet"; String sheetName3 = "第三个 sheet"; ExcelUtil.writeExcelWithSheets(response, list, fileName, sheetName1, new ExportInfo()) .write(list, sheetName2, new ExportInfo()) .write(list, sheetName3, new ExportInfo()) .finish();}

    write 方法的参数为当前 sheet 的 list 数据,当前 sheet 名以及对应的映射类。

    扩展阅读

    代码整洁之道|最佳实践小结

    Javascript 将 HTML 页面生成 PDF 并下载

    Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

    来源:https://juejin.im/post/5ba320546fb9a05d0b14304b

    文章来源网络,版权归作者本人所有,如侵犯到原作者权益,请与我们联系删除

  • ?

    整理关于java读取excel内容的例子供大家参考

    致命伤

    展开

    1POI简介

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

    2POI下载

    poi下载地址:https://apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.tar.gz

    下载之后把压缩包解压,然后在项目里面引用解压文件夹里面的jar

    3新建java project,引入poi相关的jar

    4创建一个java类,编写代码

    package test;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.InputStream;

    import org.apache.poi.hssf.usermodel.HSSFRow;

    import org.apache.poi.hssf.usermodel.HSSFSheet;

    import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    public class ReadExcel {

    /**

    * @param args

    */

    @SuppressWarnings("resource")

    public static void main(String[] args) {

    try {

    InputStream is = new FileInputStream(new File(

    "D:/360bizhi/0_TITLE_CODE.xls"));

    HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);

    // 获取每一个工作薄

    for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {

    HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);

    if (hssfSheet == null) {

    continue;

    }

    // 获取当前工作薄的每一行

    for (int rowNum = 0; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {

    HSSFRow hssfRow = hssfSheet.getRow(rowNum);

    if (hssfRow != null) {

    String title_id = String.valueOf(hssfRow.getCell(0));

    // 读取第一列数据

    String title_name = String.valueOf(hssfRow.getCell(1));

    // 读取第二列数据

    String title_name_en = String.valueOf(hssfRow

    .getCell(2));

    System.out.println("===============title_id:"

    + title_id + ",title_name:" + title_name

    + ",title_name_en:" + title_name_en);

    } catch (Exception e) {

    e.printStackTrace();

    5运行main进行测试,查看打印结果

    打印结果和xls里面的值是一样的,说明读取excel成功

    请大家多多关注我的头条号,谢谢大家

  • java如何读取excel