【发布时间】:2019-08-27 12:20:13
【问题描述】:
我有一个 CSV 文件,我正在编写一个程序来处理它。我正在使用 POJO 模型。我可以找到金额的总和。现在我需要编写一个新的 CSV 文件,其中包含 Date、Total 列。我该怎么做?
PurchaseDetails.java
public class PurchaseDetails {
public static void main(String args[]) {
BufferedReader br = null;
double totalamt = 0;
final String COMMA_DELIMITER = ",";
final String NEW_LINE_SEPARATOR = "\n";
final String FILE_HEADER = "Date,Total amount";
FileWriter fileWriter = null;
try {
br = new BufferedReader(new FileReader("/home/Desktop/Sample.csv"));
List<Purchase> pList = new ArrayList<Purchase>();
String line = "";
br.readLine();
while ((line = br.readLine()) != null) {
String[] purchaseDetails = line.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
if (purchaseDetails.length > 0) {
Purchase purchase1 = new Purchase(purchaseDetails[0], purchaseDetails[1], purchaseDetails[2],
purchaseDetails[3], purchaseDetails[4], purchaseDetails[5],
purchaseDetails[6], purchaseDetails[7]);
pList.add(purchase1);
}
String purchase = purchaseDetails[7];
String purchase1 = purchase.replaceAll("\"", "");
String purchase2 = purchase1.replaceAll(",", "");
double d = Double.parseDouble(purchase2);
totalamt = totalamt+ d;
}
DecimalFormat df = new DecimalFormat("#.00");
String totamount = df.format(totalamt);
System.out.println("total amount= "+totamount);
fileWriter = new FileWriter("/home/Desktop/Writecsv.csv");
fileWriter.append(FILE_HEADER.toString());
fileWriter.append(NEW_LINE_SEPARATOR);
for (Purchase purchase : pList) {
fileWriter.append(purchase.getDate());
fileWriter.append(COMMA_DELIMITER);
fileWriter.append(purchase.getAmount());
fileWriter.append(NEW_LINE_SEPARATOR);
}
System.out.println("CSV file created");
}
catch(Exception ee)
{
ee.printStackTrace();
}
}
}
Purchase.java
public class Purchase {
private String date;
private String custid;
private String custname;
private String sgnid;
private String sgn_name;
private String orderno;
private String skuno;
private String amount;
public Purchase(String date, String custid, String custname, String sgnid, String sgn_name, String orderno, String skuno, String amount) {
super();
this.date=date;
this.custid=custid;
this.custname=custname;
this.sgnid=sgnid;
this.sgn_name=sgn_name;
this.orderno=orderno;
this.skuno=skuno;
this.amount=amount;
}
public Purchase() {
// TODO Auto-generated constructor stub
}
//setters and getters
}
【问题讨论】:
-
您列出的代码似乎符合您的要求。有什么不适合它的吗?你真正的问题是什么?
-
@RogerGustavsson 我需要创建一个新的 csv 文件,其中包含列日期、总金额。这是每个日期的总金额。
-
@RogerGustavsson 我可以创建一个新的 CSV 文件。但是如何制作日期,该文件中每个日期的总数
-
重新格式化的代码段