使用jxl API打印HashMap到Excel



我想打印一个HashMap到Excel工作表。我迭代通过映射和提取键,值到一个标签。但是,我无法打印HashMap的所有字段。这是我的代码。

import java.io.File;
import java.util.HashMap;
import java.util.Map.Entry;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
class WriteExcel {
    HashMap<Integer, String> map = new HashMap<Integer, String>();
    public void writeToFile() throws Exception {
        WritableWorkbook wworkbook = Workbook.createWorkbook(new File("D:\output.xls"));
        WritableSheet wsheet = wworkbook.createSheet("First Sheet", 0);
        Label l1 = new Label(0, 0, "Serial No");
        Label l2 = new Label(1, 0, "Name");
        wsheet.addCell(l1);
        wsheet.addCell(l2);
        map.put(1, "Hello");
        map.put(2, "World");
        map.put(3, "StackOverflow");
        map.put(4, "StackExchange");
        for (Entry<Integer, String> entry : map.entrySet()) {
            int i = 2;
            Label lbl1 = new Label(0, i, entry.getKey().toString());
            Label lbl2 = new Label(1, i, entry.getValue());
            i++;
            wsheet.addCell(lbl1);
            wsheet.addCell(lbl2);
            wworkbook.write();
        }
        wworkbook.write();
        wworkbook.close();
    }
}
public class Test2 {
    public static void main(String[] args) 
    {
        WriteExcel write = new WriteExcel();
        try {
            write.writeToFile();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我只能打印map的第一个记录。-->即1 Hello

不打印map的其他记录。

谁能告诉我为什么会这样?

代码有什么问题?

循环有两个问题:第一:i应该在外面声明,以便不每次都覆盖自己到2,第二是你应该在你完成添加所有单元格后只调用wworkbook.write();一次。

下面的修改使它在我的计算机上工作:

    int i = 2;
    for (Entry<Integer, String> entry : map.entrySet()) {
        Label lbl1 = new Label(0, i, entry.getKey().toString());
        Label lbl2 = new Label(1, i, entry.getValue());
        i++;
        wsheet.addCell(lbl1);
        wsheet.addCell(lbl2);
    }
    wworkbook.write();
    wworkbook.close();

最新更新