打印(获取打印输出)arraylist中的元素

时间:2016-01-24 06:34:24

标签: java excel arraylist printing apache-poi

情景:

我正在做一个小应用程序来提取大量的Excel工作表数据并对其进行排序然后保存,然后如果需要打印它。我正在使用JavaFX for UI and Apache POI来读取和写入Excel数据。我已将提取的数据放到ArrayList中,然后我可以执行保存部分。

首先我想把Arraylist元素放到TextArea中然后我可以打印它。但是将每个元素附加到TextArea需要花费很多时间(考虑大约10万个单元格数据)。我想从ArrayList直接打印。

问题: 是否可以从数组列表中获取打印。 可以选择以下任何一种选项吗?

此代码可用于从UI中打印内容,如TextArea。

if (job != null && job.showPrintDialog(ProjectNavigation.scene.getWindow())){
            boolean success = job.printPage(node);
            if (success) {
                job.endJob();
            }
        }

但问题是我的UI中没有数据。我认为的选项:

  • 创建临时文件并将其打印为删除文件
  • 将数组列表转换为某些内容,然后将其打印出来。
  • 任何库都可以吗??

任何建议都会有所帮助。谢谢。

PS:

正如Khaled Khnifer在回答中提到的那样,我使用ListView来显示UI中可以打印数据的项目。

1 个答案:

答案 0 :(得分:1)

我没有放弃确定您真正需要的内容,但我会回复您要将ArrayList打印到TextArea的部分。

如果您正在构建 JavaFX 应用程序,则可以将ListView绑定到ObservableList,以更新更新。

public class AppController implements Initializable
{
    @FXML private Button myButton;

    @FXML private ListView myListView;

    // ObservableList is a List
    protected ObservableList<String> list = new FXCollections.observableArrayList();

    protected int counter = 0;

    @Override
    public void initialize(URL url, ResourceBundle rb)
    {
        myListView.setItems(list);

        myButton.setOnAction(new EventHandler<ActionEvent>()
        {@Override public void handle(ActionEvent event)
        {
            list.add(counter++);
        }});
    }
}

在此示例中,点击该按钮会向ObservableList添加新项目,更改将显示在屏幕上的ListView上。

您可以添加新项目,删除项目,对项目进行排序,修改项目,更改将在屏幕上更新。

这是从视图中分离数据的好方法,您不需要从UI读取数据,将其写入UI,并且您可以轻松地将数据写入文件,因为它&#39 ; s Serializable