中国**银行网上支付商户对帐文件
商户名称 *****信息服务有限公司
消费笔数 0
撤销笔数 0
退单笔数 0
累计笔数 0
交易明细
订单号 交易金额 交易日期 交易时间 交易类型
1111     1111111  11111111  1111111  1111111
1111     1111111  11111111  1111111  1111111
1111     1111111  11111111  1111111  1111111
注:对2007年3月10日前支付的订单进行的退单交易金额将单独划账,不记在日终轧差金额中。 这是我从银行导出的csv文件,我现在只想读取:
1111     1111111  11111111  1111111  1111111
1111     1111111  11111111  1111111  1111111
1111     1111111  11111111  1111111  1111111我现在的写法数根据标题“订单号 交易金额 交易日期 交易时间 交易类型”来读的,
读之前还要先删掉:
商户名称 *****信息服务有限公司
消费笔数 0
撤销笔数 0
退单笔数 0
累计笔数 0
交易明细
注:对2007年3月10日前支付的订单进行的退单交易金额将单独划账,不记在日终轧差金额中。
重新保存文件,才可以
现在向搞个灵活的  不用修改CSV文件就可以读取,到想要的数据,应该是要按行按列读取,不知道咋搞的

解决方案 »

  1.   

    把CSV文件的文本内容贴上来,我帮你搞定
      

  2.   

    blablablablablablabla
    `
    ````
      

  3.   

    package mars.csv;import java.io.*;
    import java.util.LinkedList;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class CsvFile { /**
     * 获取文件内容
     * @param fullName
     * @return
     * @throws Exception
     */
    public static StringBuilder getContent(String fullName) throws Exception 
    {
    StringBuilder returnValue=null;

    File file=new File(fullName);

    if(!file.isFile() || !file.exists())
    {
    throw new Exception("File not found or is not File!");
    }

    FileReader freader=new FileReader(file);

    if(freader.ready())
    {

    returnValue=new StringBuilder();
    int i;
    while((i=freader.read())!=-1)
    {
    returnValue.append((char)i);
    }
    }
    freader.close();

    return returnValue;
    }
    /**
     * 获取订单列表
     * @param data
     * @return
     */
    public static LinkedList<OrderItem> searchOrders(StringBuilder data)
    {
    LinkedList<OrderItem> returnValue=null;
    if(data!=null)
    {
    returnValue=new LinkedList<OrderItem>();

    Pattern pattern=Pattern.compile("(\\d{20})\\s*(\\d+|\\d+\\.\\d+)\\s*(\\d{8})\\s*(\\d{5,6})\\s*(\\S+)", Pattern.CASE_INSENSITIVE );
    Matcher matcher=pattern.matcher(data);
    //MatchResult result=matcher.toMatchResult();
    while(matcher.find())
    {
    returnValue.add(new OrderItem(
    matcher.group(1),
    matcher.group(2),
    matcher.group(3),
    matcher.group(4),
    matcher.group(5)));
    }
    }
    System.out.print(returnValue.size());
    return returnValue;
    }
    }
      

  4.   

    package mars.csv;public class OrderItem {
    String orderNo=null; //订单号
    String money=null;//交易金额
    String orderDate=null;//交易日期
    String orderTime=null;//交易时间
    String orderType=null;//交易类型

    public OrderItem(
    String orderNo,
    String money,
    String orderDate,
    String orderTime,
    String orderType)
    {
    this.orderDate=orderDate;
    this.money=money;
    this.orderNo=orderNo;
    this.orderTime=orderTime;
    this.orderType=orderType;
    }

    public String getOrderNo() {
    return orderNo;
    }
    public void setOrderNo(String orderNo) {
    this.orderNo = orderNo;
    }
    public String getMoney() {
    return money;
    }
    public void setMoney(String money) {
    this.money = money;
    }
    public String getOrderDate() {
    return orderDate;
    }
    public void setOrderDate(String orderDate) {
    this.orderDate = orderDate;
    }
    public String getOrderTime() {
    return orderTime;
    }
    public void setOrderTime(String orderTime) {
    this.orderTime = orderTime;
    }
    public String getOrderType() {
    return orderType;
    }
    public void setOrderType(String orderType) {
    this.orderType = orderType;
    }


    }
      

  5.   

    本人没有做过java,也许程序可以优化,你自己参考一下把
    接分!package mars.test;import java.util.LinkedList;import mars.csv.*;public class Test { /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
    LinkedList<OrderItem> orders=CsvFile.searchOrders(CsvFile.getContent("C:\\test.txt"));
    if(orders!=null)
    {
    for(OrderItem item:orders)
    {
    System.out.println(
    item.getOrderNo()+"\t"+
    item.getMoney()+"\t"+
    item.getOrderDate()+"\t"+
    item.getOrderTime()+"\t"+
    item.getOrderType());
    }
    }
    }
    }
      

  6.   

    中国民生银行网上支付商户对帐文件 
    商户名称 信息服务有限公司 对帐日期 20100319 
    消费笔数 18 消费金额 13.09 
    撤销笔数 0 撤销金额 0 
    退单笔数 0 退单金额 0 
    累计笔数 18 汇总金额 13.09 
    交易明细 
    这些信息你怎么办   我要直接读取csv文件(EXCEL保存的一种格式)
    按标题读我也会  我现在要按行列读取  这样灵活一点
      

  7.   

    你可以测试一下,我不是按标题读的,你把程序看一下,csv文件是纯文本文件,是以逗号为分割符,遇到逗号的文本用引号,遇到引号用两个引号,按你发给我的文本内容,这还不是标准的CSV文件
      

  8.   

    可能是我没有说清楚,不好意思 
    保存为txt文件 按照你的方法确实可以的  但从银行下载下来的时候是*.csv   我想直接读取这样的文件
      

  9.   

    肯定也是可以的,你把csv格式的文件用文本文件的程序打开,全选复制,贴出来给我看
      

  10.   

    文本文件里 很乱得贴到这里就好了  可能CSDN这个编辑器会自动装换吧
      

  11.   

    你把关键数据项贴给我一份,不需要改动多少,就把\\s*改为"\\s*,\\s*"
    \\d{20})\\s*(\\d+|\\d+\\.\\d+)\\s*(\\d{8})\\s*(\\d{5,6})\\s*(\\S+)"改为
    \\d{20})\\s*,\\s*(\\d+|\\d+\\.\\d+)\\s*,\\s*(\\d{8})\\s*,\\s*(\\d{5,6})\\s*,\\s*(\\S+)"
    就可以了,你把文件名直接改成CSV的文件名试试吧,肯定可以
      

  12.   

    不行啊  你能不能新建个excel保存为csv文件 随点填点数据试试啊 我试了不行啊
      

  13.   

     可能给个邮箱  我把我的csv文件发给你
      

  14.   

    [email protected]
    发给我,我晚上到家帮你搞定
      

  15.   

    发给我一份 我给你搞定 你的目的是不是:读这个.csv文件且只要订单号 交易金额 交易日期 交易时间 交易类型
    下面的数据?
      

  16.   

    LineNumberReader lReader = new LineNumberReader(new FileReader("E:\\ttt.csv"));
    int lineNum = 0;
    String lineString = "";
    while((lineString=lReader.readLine())!=null){
    lineNum = lReader.getLineNumber();
    if(lineNum >= 7){
    System.out.println(lineString);
    }
    }
    大体思想我这样想的
    这个是按行号读的,csv文件里的每列都是按“,”逗号分隔的,具体的某行你可以用split分隔读!!
      

  17.   

    package mars.csv;import java.util.LinkedList;public class Test {    /**
         * @param args
         * @throws Exception 
         */
        public static void main(String[] args) throws Exception {    
            LinkedList<OrderItem> orders=CsvFile.searchOrders(CsvFile.getContent("C:\\billtxinfodownload20100320155036.csv"));
            if(orders!=null)
            {
                for(OrderItem item:orders)
                {
                    System.out.println(
                            item.getOrderNo()+"\t"+
                            item.getMoney()+"\t"+
                            item.getOrderDate()+"\t"+
                            item.getOrderTime()+"\t"+
                            item.getOrderType());
                }
                System.out.println("共"+orders.size()+"条记录!");
            }
        }
    }测试过了,可以!接分
      

  18.   

    package mars.csv;public class OrderItem {
        String orderNo=null; //订单号
        String money=null;//交易金额
        String orderDate=null;//交易日期
        String orderTime=null;//交易时间
        String orderType=null;//交易类型
        
        public OrderItem(
                String orderNo,
                String money,
                String orderDate,
                String orderTime,
                String orderType)
        {
            this.orderDate=orderDate;
            this.money=money;
            this.orderNo=orderNo;
            this.orderTime=orderTime;
            this.orderType=orderType;
        }
        
        public String getOrderNo() {
            return orderNo;
        }
        public void setOrderNo(String orderNo) {
            this.orderNo = orderNo;
        }
        public String getMoney() {
            return money;
        }
        public void setMoney(String money) {
            this.money = money;
        }
        public String getOrderDate() {
            return orderDate;
        }
        public void setOrderDate(String orderDate) {
            this.orderDate = orderDate;
        }
        public String getOrderTime() {
            return orderTime;
        }
        public void setOrderTime(String orderTime) {
            this.orderTime = orderTime;
        }
        public String getOrderType() {
            return orderType;
        }
        public void setOrderType(String orderType) {
            this.orderType = orderType;
        }
        
        
    }
      

  19.   

    package mars.csv;import java.io.*;
    import java.util.LinkedList;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class CsvFile {    /**
         * 获取文件内容
         * @param fullName
         * @return
         * @throws Exception
         */
        public static StringBuilder getContent(String fullName) throws Exception 
        {
            StringBuilder returnValue=null;
            
            File file=new File(fullName);
            
            if(!file.isFile() || !file.exists())
            {
                throw new Exception("File not found or is not File!");
            }
            
            FileReader freader=new FileReader(file);
                
            if(freader.ready())
            {
                
                returnValue=new StringBuilder();
                int i;
                while((i=freader.read())!=-1)
                {
                    returnValue.append((char)i);
                }
            }
            freader.close();
            
            return returnValue;
        }
        /**
         * 获取订单列表
         * @param data
         * @return
         */
        public static LinkedList<OrderItem> searchOrders(StringBuilder data)
        {
            LinkedList<OrderItem> returnValue=null;
            if(data!=null)
            {
                returnValue=new LinkedList<OrderItem>();
                
                Pattern pattern=Pattern.compile("(\\d{20})\\s*,\\s*(\\d+|\\d+\\.\\d+)\\s*,\\s*(\\d{8})\\s*,\\s*(\\d{5,6})\\s*,\\s*(\\S+)", Pattern.CASE_INSENSITIVE );
                Matcher matcher=pattern.matcher(data);
                //MatchResult result=matcher.toMatchResult();
                while(matcher.find())
                {
                    returnValue.add(new OrderItem(
                            matcher.group(1),
                            matcher.group(2),
                            matcher.group(3),
                            matcher.group(4),
                            matcher.group(5)));
                }
            }        
            return returnValue;
        }
    }