Skip to content

Instantly share code, notes, and snippets.

@tksk
Forked from anonymous/AP.java
Created June 30, 2011 20:10
Show Gist options
  • Save tksk/1057104 to your computer and use it in GitHub Desktop.
Save tksk/1057104 to your computer and use it in GitHub Desktop.
monndai
import java.io.*;
class CSVtorikomi
{
public static void main(String[] args)
{
try{
File sakujofile = new File("html文章.html");
sakujofile.delete();
BufferedReader br =
new BufferedReader(new FileReader("TORIKOMI.TXT"));
String[] todoufuken = new String[500];
String[] siten = new String[500];
String[] uriage = new String[500];
String str;
int j = 0;
str = br.readLine();
while(str!=null){
int iti;
iti = str.indexOf(',');
String kekka;
kekka = str.substring(0, iti - 1);
todoufuken[j] = kekka;
int iti2;
iti2 = str.indexOf(',',iti + 1);
kekka = str.substring(iti+1, iti2);
siten[j] = kekka;
int iti3;
iti3 = str.length();
kekka = str.substring(iti2+1, iti3);
uriage[j] = kekka;
j++;
str = br.readLine();
}
br.close();
PrintWriter pw = new PrintWriter
(new BufferedWriter(new FileWriter("html文章.txt")));
pw.println("<html>");
pw.println("<head>");
pw.println("<title>");
pw.println("JAVAでプログラミング");
pw.println("</title>");
pw.println("</head>");
pw.println("<table border=\"1\">");
int k = 0;
int i = 0;
int kazu = 0;
String mae = todoufuken[i];
while(todoufuken[i]!=null){
if(mae.equals(todoufuken[i])){
mae = todoufuken[i];
kazu++;
}
else{
kazu++;
pw.println("<td rowspan=\"" + kazu + "\">" + mae + "</td>");
long goukei = 0;
for(int l=k; l<=i-1; l++){
pw.println("<td>" + siten[l] + "</td><td>" + uriage[l] +"</td><tr>");
goukei = goukei + Long.parseLong(uriage[l]);
k++;
}
pw.println("<td>売上合計</td><td>" + goukei +"</td><tr>");
mae = todoufuken[i];
kazu = 0;
i--;
}
//pw.println("<td>"todoufuken[i] + "---" + siten[i] + "---" + uriage[i]);
i++;
}
i--;
kazu++;
long goukei2 = 0;
pw.println("<td rowspan=\"" + kazu + "\">" + mae + "</td>");
for(int l=k; l<=i; l++){
pw.println("<td>" + siten[l] + "</td><td>" + uriage[l] +"</td><tr>");
goukei2 = goukei2 + Long.parseLong(uriage[l]);
k++;
}
pw.println("<td>売上合計</td><td>" + goukei2 +"</td><tr>");
pw.println("</table>");
pw.println("</body>");
pw.println("</html>");
pw.close();
File fileA = new File("html文章.txt");
File fileB = new File("html文章.html");
fileA.renameTo(fileB);
System.out.println("ファイルに書き込みました");
}
catch(IOException e){
System.out.println("入出力エラーです");
}
}
}
愛知県,トヨタ,100
愛知県,岡崎,200
愛知県,三好,300
愛知県,名古屋,500
愛知県,日進,700
三重県,津,100
三重県,松坂,300
三重県,長島,1
三重県,鈴鹿,600
岐阜県,多治見,10
岐阜県,岐阜,800
神奈川県,横浜,1000
神奈川県,humei,1000
@tksk
Copy link
Author

tksk commented Jun 30, 2011

  1. CSV レコード 1 行を格納する専用のクラス「Record」を用意する。
    2a) CSV の切り出しロジックを Record に移動
    2b) 2a のロジックは正規表現を用いる

@tksk
Copy link
Author

tksk commented Jun 30, 2011

  1. String 出力を工夫
    例えば L.84 は次のようにする。
    pw.println(String.format("<td rowspan="%d">%s</td>", kazu, mae));

@tksk
Copy link
Author

tksk commented Jul 2, 2011

  1. ユーザビリティ
    4a) 入力ファイル名と出力ファイル名をユーザが指定できるようにする。
    4b) 4a を標準入出力から行うことを検討する。つまり、以下のような使い方ができるようにする。
    java CSVtorikomi <TORIKOMI.TXT >html文章.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment