我必须将cvs文件中的值导出到数组中,然后将其导出到html表中。
我尝试过经典的for循环,但这使代码无法正常工作
String csvFile = "/Users/baab/baab/baab/data.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
String[] country = line.split(cvsSplitBy);
String Krajina = country[0]+" ";
String Rok = country[1];
String Vendor = country[2];
String Units = country[3];
String KrajinaArray[] = Krajina.split(",");
String RokArray[] = Rok.split(",");
String VendorArray1[] = Vendor.split(",");
String UnitsArray1[] = Units.split(",");
for(int d=0; d < UnitsArray1.length; d++){
for(int c=0; c < VendorArray1.length; c++){
for(int b=0; b < RokArray.length; b++){
for(int i=0; i < KrajinaArray.length; i++){
//System.out.println("Krajina: "+ country[0]+", Rok: "+ country[1]+", Vendor: "+country[2]+", Units: "+country[3]);
File f = new File("/Users/baab/baab/baab/data.csv"");
PrintWriter pw = new PrintWriter(f);
String html= "<style> table, th, td { border: 1px solid black; </style> </head> <body> <table> <tr> <th>Cc</th> <th>Timescale</th> <th>Vendor</th> <th>Units</th> </tr> <tr> <td>"+KrajinaArray[i]+"</td> <td>"+RokArray[b]+"<td>"+VendorArray1[i]+"<td>"+UnitsArray1[b]+"</td> </table>";
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
bw.write(html);
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
我想用所有值在表中创建行。
答案 0 :(得分:0)
这应该可以解决您的需求。由于您已经有了输出行的代码, 只需在删除其他html元素后添加循环即可。
它看起来像这样:
List<String> list = new ArrayList<String>();
String documentPre = "<html><style> table, th, td { border: 1px solid black; </style> </head> <body>";
list.add(documentPre);
String headerColumn = "<table> <tr> <th>Cc</th> <th>Timescale</th> <th>Vendor</th> <th>Units</th> </tr>";
list.add(headerColumn);
<a loop over a single csv entry>
String htmlColumn = "<tr> <td>"+KrajinaArray[i]+"</td> <td>"+RokArray[b]+"<td>"+VendorArray1[i]+"<td>"+UnitsArray1[b]+"</td>";
list.add(htmlColumn);
<your loop's end>
String documentPost = " </table></body></html>";
list.add(documentPost );
try (BufferedWriter bw = new BufferedWriter(new FileWriter(f))) {
for (String html : list) {
bw.write(html);
}
} catch (IOException e) {
e.printStackTrace();
}
注意: 我添加了一些缺少的标签,但没有修复样式部分。您只需要添加切出的部分即可。
注2: 我用try-with-resource替换了写作部分,因此关闭操作始终自动进行。阅读有关它的内容。
注3: 您介意要正确格式化html输出,以使其更易读。
注4: 假设您的某条csv行包含元素(krajina,rok,vendor,units),则应使用在单个csv上循环的东西来替换您的循环。然后将其拆分并将值传递到相关列中。
我怀疑代码中的那四个复杂的循环是正确的。