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

标签 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();
            }


我想用所有值在表中制作行。

最佳答案

这应该可以解决您的需求。由于您已经有了输出行的代码,
只需在删除其他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上循环的东西来替换您的循环。然后将其拆分并将值传递到相关列中。

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

关于java - 如何使用Java在html表中创建行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56271126/

相关文章:

javascript - 防止事件触发 : div over another div with position:absolute

jquery - 如何在页面加载时让这个 div 淡入?

javascript - 如何在javascript中将xml文件转换为csv文件

java - 匹配所有内容包括unicode标点符号的正则表达式

java - 如何解决FindBugs DP_DO_INSIDE_DO_PRIVILEGED

java - 我可以在 Java 中的 HashMap 对象中存储多少个元素

java - 使用 BufferedReader 读取 csv 文件的最后 n 行

Java:循环字符串长度时间复杂度

javascript - 将多个div中的rgb值替换为十六进制

ruby - 如何使用 Hadoop 将 XML 转换为 TSV?