gpt4 book ai didi

java - 将JPanel中生成的数据导出到excel

转载 作者:行者123 更新时间:2023-12-01 13:33:27 25 4
gpt4 key购买 nike

我有一个创建 JPanel 菜单的 Java 应用程序,该程序的一部分是将用户在 JPanel 内提供的数据导出到 Excel。

我想创建 Excel 文件并在我的程序中提供某些格式。

我尝试过使用 Apache POI,我的函数代码如下。当应用程序运行时,按下 JPanel 内的按钮即可调用该函数。

    private static void processExcelInformation() throws FileNotFoundException
{
JOptionPane.showMessageDialog(panel, "stuck before workbook", "Display",
JOptionPane.WARNING_MESSAGE);
HSSFWorkbook workbook = new HSSFWorkbook(); // <---- I cannot seem to initialize new workbook
JOptionPane.showMessageDialog(panel, "created workbook", "Display",
JOptionPane.WARNING_MESSAGE); // <---- This message is not displayed when the application runs
HSSFSheet sheet = workbook.createSheet("Sample sheet");
JOptionPane.showMessageDialog(panel, "created sheet", "Display",
JOptionPane.WARNING_MESSAGE);

Map<String, Object[]> data = new HashMap<String, Object[]>();
data.put("1", new Object[] {"Emp No.", "Name", "Salary"});
data.put("2", new Object[] {1d, "John", 1500000d});
data.put("3", new Object[] {2d, "Sam", 800000d});
data.put("4", new Object[] {3d, "Dean", 700000d});

Set<String> keyset = data.keySet();
int rownum = 0;
for (String key : keyset) {
Row row = sheet.createRow(rownum++);
Object [] objArr = data.get(key);
int cellnum = 0;
for (Object obj : objArr) { // <---- This statement does not allow the application to run, I get an error
Cell cell = row.createCell(cellnum++);
if(obj instanceof Date)
cell.setCellValue((Date)obj);
else if(obj instanceof Boolean)
cell.setCellValue((Boolean)obj);
else if(obj instanceof String)
cell.setCellValue((String)obj);
else if(obj instanceof Double)
cell.setCellValue((Double)obj);
}
}

try {
JOptionPane.showMessageDialog(panel, "stuck before xls", "Display",
JOptionPane.WARNING_MESSAGE);
FileOutputStream out =
new FileOutputStream(new File("new.xls"));
workbook.write(out);
out.close();
System.out.println("Excel written successfully..");
JOptionPane.showMessageDialog(panel, "Excel written", "Display",
JOptionPane.WARNING_MESSAGE);

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

检查我的代码有问题的评论。

也许有人可以推荐我另一种方法来完成我的任务或为我的问题提供解决方案。

谢谢

这是我的代码的更多内容...

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
soccerStock = new ArrayList<Soccer>();
childrenStock = new ArrayList<Children>();
miniSoccerStock = new ArrayList<MiniSoccer>();
tennisStock = new ArrayList<Tennis>();
universalStock = new ArrayList<Universal>();
try {
// processExcelInformation();
parseXMLInput();
initializeGrassChoices();

} catch (JAXBException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

Calculator ex = new Calculator();
ex.setVisible(true);
}
});
}

public Calculator() {
initUI();
}

public final void initUI() {
initGrassRollChoices();
initPanel();
createMenu();
}

这是调用 processExcelInformation() 函数的按钮...

JMenuItem xls = new JMenuItem("Excel", null);
xls.setMnemonic(KeyEvent.VK_E);
xls.setToolTipText("Export Excel");

xls.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
try {
processExcelInformation();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

});

当我在主函数编译期间调用 processExcelInformation() 时,它会按要求创建 Excel 文件。但是,当我编写代码使用按钮调用 processExcelInformation() 函数时,启动应用程序时出现错误。

最佳答案

有一个名为 Jexcel 的开源软件包,它可能提供您需要的工具。看这个Source Forge site对于源包。如需教程和 API 文档,您可以 look here

附加:我刚刚读了一些评论。看来 JExcel 的声誉不太好,而且不支持 xlsx 格式。

查看您的代码,我发现您指出的 for 循环可能存在问题。您没有提到错误是什么,但我怀疑您不能简单地将数组视为集合。我倾向于尝试像这样更传统的东西:

for (int i = 0; i < objArr.length; i++){
...
}

关于java - 将JPanel中生成的数据导出到excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21425505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com