`

Java CSV control

 
阅读更多
package com.excel.test;

  import java.io.BufferedReader; 
  import java.io.FileInputStream; 
  import java.io.IOException; 
  import java.io.InputStreamReader; 
  import java.util.ArrayList; 
import java.util.HashMap;
  import java.util.List; 
  import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
   
  /*
   * 文件规则
   * Microsoft的格式是最简单的。以逗号分隔的值要么是“纯粹的”(仅仅包含在括号之前),
   * 要么是在双引号之间(这时数据中的双引号以一对双引号表示)。
   * Ten Thousand,10000, 2710 ,,"10,000","It's ""10 Grand"", baby",10K
   * 这一行包含七个字段(fields):
   *  Ten Thousand
   *  10000
   *   2710 
   *  空字段
   *  10,000
   *  It's "10 Grand", baby
   *  10K
   * 每条记录占一行
   * 以逗号为分隔符
   * 逗号前后的空格会被忽略
   * 字段中包含有逗号,该字段必须用双引号括起来。如果是全角的没有问题。
   * 字段中包含有换行符,该字段必须用双引号括起来
   * 字段前后包含有空格,该字段必须用双引号括起来
   * 字段中的双引号用两个双引号表示
   * 字段中如果有双引号,该字段必须用双引号括起来
   * 第一条记录,可以是字段名
   */ 
  /** 
  
 
  public class TestCSVRead { 
      private InputStreamReader fr = null; 
      private BufferedReader br = null; 
   
      public TestCSVRead(String f) throws IOException { 
          fr = new InputStreamReader(new FileInputStream(f)); 
      } 
   
      /**
       * 解析csv文件 到一个list中
       * 每个单元个为一个String类型记录,每一行为一个list。
       * 再将所有的行放到一个总list中
       * @return
       * @throws IOException
       */ 
      public List<List<String>> readCSVFile() throws IOException { 
          br = new BufferedReader(fr); 
          String rec = null;//一行 
          String str;//一个单元格 
          List<List<String>> listFile = new ArrayList<List<String>>(); 
          try {            
              //读取一行 
//          if(br!=null) br.readLine();
              while ((rec = br.readLine()) != null) { 
                  Pattern pCells = Pattern 
                          .compile("(\"[^\"]*(\"{2})*[^\"]*\")*[^,]*,"); 
                   
                  rec +=",";
                  Matcher mCells = pCells.matcher(rec); 
                  List<String> cells = new ArrayList<String>();//每行记录一个list 
                  //读取每个单元格 
                 
                  while (mCells.find()) { 
//                  System.out.println(mCells.end());
                      str = mCells.group();
                      str = str.replaceAll( 
                              "(?sm)\"?([^\"]*(\"{2})*[^\"]*)\"?.*,", "$1"); 
                      str = str.replaceAll("(?sm)(\"(\"))", "$2");
//                      str = str.replaceAll("(.*)\"$", "$1");
                      cells.add(str); 
                  } 
                  listFile.add(cells); 
              }            
          } catch (Exception e) { 
              e.printStackTrace(); 
          } finally { 
              if (fr != null) { 
                  fr.close(); 
              } 
              if (br != null) { 
                  br.close(); 
              } 
          } 
          return listFile; 
      } 
   
      public static void main(String[] args) throws Throwable { 
      TestCSVRead parser = new TestCSVRead(""); 

     
          List<List<String>> list = parser.readCSVFile();
          List<String> listTitle = list.get(20);
      for(int i=0;i<listTitle.size();i++){
      System.out.println(i+" ######  "+listTitle.get(i));
      }

       
         
      } 
  } 
分享到:
评论

相关推荐

    java_cvs_解析

    Java CVS 解析详解 在软件开发领域,版本控制系统(Version Control System, VCS)是不可或缺的工具,它帮助开发者管理代码的历史版本,协同合作。其中,CVS(Concurrent Versions System)是一个开源的、网络化的...

    将CSV、EXCEL、TXT等文件的数据导入到oracle中

    sqlldr user/pwd@db_name control=control_file.ctl data=yourdata.csv ``` 2. SQL Developer:这是一个图形用户界面工具,操作更为直观。打开SQL Developer,创建新的“数据导入”任务,选择CSV文件,设置列分隔符...

    读取csv文档

    在Java中,解析CSV文件通常需要借助第三方库,如本例中提到的`javacsv-2.0.jar`。下面我们将详细讲解如何使用Java和Struts2框架来实现CSV文件的读取与处理。 首先,在前端,我们需要一个HTML表单让用户选择要上传的...

    timewarrior-java-control

    这些报告可以导出为各种格式,如CSV或PDF,便于进一步分析或分享。 **用户界面**方面,尽管Timewarrior Java控件本身并不提供图形界面,但它鼓励开发者利用提供的API创建自定义的UI,以适应不同用户的工作习惯和...

    JmeterAPISample:通过 jmeter api java 代码而不是 gui 进行负载测试的 POC 示例并生成 jmx 和 csv 报告

    《使用JMeter API进行负载测试:Java代码实现与报告生成》 在软件性能测试领域,Apache JMeter是一款广泛应用的开源工具,它支持多种协议和服务的性能和稳定性测试。然而,通常我们是通过图形用户界面(GUI)来设计...

    sqluldr2数据快速导出工具

    sqluldr2 username/password@database control=/path/to/control_file.ctl log=/path/to/log_file.log data=/path/to/data_file.csv ``` 在Linux中,路径通常使用正斜杠`/`分隔,且文件名不区分大小写。 ### 4. ...

    CSV_Pro.rar

    - TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP Socket通信中,客户端会先建立连接,然后才能进行数据传输,确保数据按照顺序无丢失地到达。 - 客户端通常...

    java study

    你可能需要了解如何读取和操作数据文件(如CSV或JSON),使用Java的流(Stream) API进行数据过滤和转换,以及基础的统计计算和可视化。 "spc"可能是“统计过程控制”(Statistical Process Control)的缩写,这是一种...

    java 学生登记表

    8. **控制结构(Control Structures)**:程序可能使用if语句、for循环或while循环来遍历学生列表,进行条件判断或重复执行某些任务。 9. **继承与多态(Inheritance and Polymorphism)**:虽然这个简单的学生登记...

    最新Selenium Client Drivers(JAVA)

    Selenium的核心组件包括WebDriver和Selenium RC(Remote Control)。WebDriver是一个API,它直接与浏览器进行通信,模拟用户的行为。Selenium RC则是一个服务器,可以接收测试脚本并控制浏览器执行。随着WebDriver的...

    java常用第三方软件包大全_.docx

    25. **Google Guice**:轻量级的IOC(Inversion of Control)框架,声称性能优于Spring。 26. **CGLib**:动态代理框架,被Spring和Hibernate等框架用于实现动态代理。 27. **JBoss jBPM**:开源的工作流引擎,...

    React获取Java后台文件流并下载Excel文件流程解析

    1. Java后台服务器响应头设置:包括Content-Disposition、Access-Control-Expose-Headers、FileName等参数的设置。 2. Excel文件流生成:使用ExcelUtils工具类生成Excel文件流。 3. React前端文件流处理:使用axios...

    JeeSite java快速开发平台.zip

    JeeSite提供了完善的权限控制机制,支持RBAC(Role-Based Access Control)角色权限管理,可以精细到操作级别的权限分配,确保系统的安全性和稳定性。同时,权限控制与菜单系统紧密结合,实现了动态权限分配和权限的...

    Java图书管理系统

    对于初学者,可以使用文件存储,如序列化技术或CSV文件。 在实现这个项目时,你将接触到以下几个关键的Java技术: - 控制台输入/输出(Console Input/Output):使用System.in读取用户输入,使用System.out....

    使用Java SSH框架做的项目

    它通过IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)两大核心特性,实现了代码的解耦和模块化。在本项目中,Spring可能被用来创建DAO(Data Access Object)和Service...

    Selenium技术使用大全

    此外,Selenium还支持数据驱动测试,通过外部数据源(如CSV文件或数据库)提供测试数据,提高测试的覆盖率和灵活性。 总的来说,Selenium Remote Control 提供了一个强大且灵活的平台,用于Web应用的自动化测试。它...

    Java Treeview-开源

    PCL(Platform Control Language)通常由Affymetrix公司生成,而CDT(Chip Description Table)文件则包含了微阵列芯片的详细信息。 2. **可视化**:Java Treeview将数据以树形结构展示,使得用户可以清晰地看到...

    java编程术语java编程术语java编程术语

    “Delimit”一词在编程中通常用于分隔数据,如在CSV文件中,逗号就是分隔符。时间戳“timestamp”记录了特定事件发生的时间信息,而在编程中,它常用于追踪程序运行状态。间隔“interval”则可能指两个时间点或数据...

    POSSuppliers:Java postgreSQL Gradle log4j slf4j logback CSV MyIbatis Gavua DAO POJO

    用于集成以下框架工具的示例项目Gradle to Build and Dependency Control MyIbatis as ORM for Mapping & Persistence JDBC Driver for PostgreSQL Junit For Some Unite Test Log4J 或 logback 或 SLF4J for LOGGIN...

    java Spring松耦合高效应用简单实例分析

    Spring框架通过其IoC(Inversion of Control)或依赖注入(Dependency Injection)机制帮助实现松耦合。在IoC中,Spring容器负责创建对象并管理它们之间的依赖关系,而不是由对象自己管理。这样,对象只需要声明它们...

Global site tag (gtag.js) - Google Analytics