如何使用Java在html表中创建行

时间:2019-05-23 08:32:03

标签: java html csv

我必须将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();
            }

我想用所有值在表中创建行。

1 个答案:

答案 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上循环的东西来替换您的循环。然后将其拆分并将值传递到相关列中。

我怀疑代码中的那四个复杂的循环是正确的。