中国**银行网上支付商户对帐文件
商户名称 *****信息服务有限公司
消费笔数 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文件就可以读取,到想要的数据,应该是要按行按列读取,不知道咋搞的
商户名称 *****信息服务有限公司
消费笔数 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文件就可以读取,到想要的数据,应该是要按行按列读取,不知道咋搞的
`
````
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;
}
}
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;
}
}
接分!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());
}
}
}
}
商户名称 信息服务有限公司 对帐日期 20100319
消费笔数 18 消费金额 13.09
撤销笔数 0 撤销金额 0
退单笔数 0 退单金额 0
累计笔数 18 汇总金额 13.09
交易明细
这些信息你怎么办 我要直接读取csv文件(EXCEL保存的一种格式)
按标题读我也会 我现在要按行列读取 这样灵活一点
保存为txt文件 按照你的方法确实可以的 但从银行下载下来的时候是*.csv 我想直接读取这样的文件
\\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的文件名试试吧,肯定可以
发给我,我晚上到家帮你搞定
下面的数据?
int lineNum = 0;
String lineString = "";
while((lineString=lReader.readLine())!=null){
lineNum = lReader.getLineNumber();
if(lineNum >= 7){
System.out.println(lineString);
}
}
大体思想我这样想的
这个是按行号读的,csv文件里的每列都是按“,”逗号分隔的,具体的某行你可以用split分隔读!!
* @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()+"条记录!");
}
}
}测试过了,可以!接分
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;
}
}
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;
}
}