为了账号安全,请及时绑定邮箱和手机立即绑定

在按钮单击 Apache POI 和 JavaFX 上修改 Excel 单元格值

在按钮单击 Apache POI 和 JavaFX 上修改 Excel 单元格值

心有法竹 2021-11-17 16:54:41
我正在尝试编写一个简单的程序来创建一个小应用程序,单击按钮会将值写入 Excel 电子表格。在下面的代码中,程序会将值 25 写入单元格,然后打印“25.0”。然后它会在单击按钮时将 50 写入单元格并打印出“50.0”,但是一旦我关闭应用程序并打开电子表格,单元格内就会显示值 25。package javafxapplication2;import javafx.application.Application;import javafx.event.ActionEvent;import javafx.event.EventHandler;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.layout.StackPane;import javafx.stage.Stage;import org.apache.poi.xssf.usermodel.*;import java.io.*;public class JavaFXApplication2 extends Application {@Overridepublic void start(Stage primaryStage) throws Exception {    XSSFWorkbook schedule = new XSSFWorkbook();    XSSFSheet firstSheet = schedule.createSheet("Dis a sheet");    XSSFRow firstRow = firstSheet.createRow(0);    XSSFCell firstCell = firstRow.createCell(0);    firstCell.setCellValue(25);    System.out.println(firstCell.getRawValue());    Button btn = new Button();    btn.setText("Say 'Hello World'");    btn.setOnAction(new EventHandler<ActionEvent>() {        @Override        public void handle(ActionEvent e) {            writeInfoToCell(firstCell,50);            System.out.println(firstCell.getRawValue());        }    });    //});    FileOutputStream out = new FileOutputStream(new File("schedule.xlsx"));    schedule.write(out);    out.close();    StackPane root = new StackPane();    root.getChildren().add(btn);    Scene scene = new Scene(root, 300, 250);    primaryStage.setTitle("Hello World!");    primaryStage.setScene(scene);    primaryStage.show();}public void writeInfoToCell(XSSFCell cell, int information){    cell.setCellValue(information);}/** * @param args the command line arguments */public static void main(String[] args) {    launch(args);}}有人可以帮我解决这个问题吗?它必须与单击按钮有关,因为如果我完全删除按钮,则值会正确写入单元格。谢谢!
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

您的 btn 操作仅写入 ,XSSFCell但您不会写入XSSFWorkbook.


尝试:


btn.setOnAction(new EventHandler<ActionEvent>() {

        @Override

        public void handle(ActionEvent e) {

            FileOutputStream out = new FileOutputStream(new File("schedule.xlsx"));                 

            writeInfoToCell(firstCell,50);

            System.out.println(firstCell.getRawValue());

            schedule.write(out);

            out.close();

            }


        });


查看完整回答
反对 回复 2021-11-17
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

抱歉,但是,您的意思是当您的应用程序再次运行时,您需要有一个空值,或者什么?

如果您的问题只是“打开时保持干净”,您可以在代码或 js 上放置一个简单的 jquery 并清除输入。


查看完整回答
反对 回复 2021-11-17
  • 2 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信