Java 将Jtable as表打印到文件中

Java 将Jtable as表打印到文件中,java,swing,netbeans,Java,Swing,Netbeans,我当时正在创建一个财务管理应用程序,所以我正在尝试打印总结的最后一份工作。 摘要页面由不同的表格组成,每个表格后面都有两个标签和文本字段。 所以如果有人能帮我了解一下这件事就太好了 我所要做的就是按原样将填充的Jtable打印到文件中 我不是Java方面的专家,我使用Netbeans编写gui 另外关于文件格式,我认为它必须使用.rtf来支持行等。希望从中创建rtf文件不会有困难 我对格式不是很特别。rtf我只想要一种可以支持列和表的格式 我想添加的另一件事是,我想从自定义模板创建收据。我想使用

我当时正在创建一个财务管理应用程序,所以我正在尝试打印总结的最后一份工作。 摘要页面由不同的表格组成,每个表格后面都有两个标签和文本字段。 所以如果有人能帮我了解一下这件事就太好了

我所要做的就是按原样将填充的Jtable打印到文件中

我不是Java方面的专家,我使用Netbeans编写gui

另外关于文件格式,我认为它必须使用.rtf来支持行等。希望从中创建rtf文件不会有困难

我对格式不是很特别。rtf我只想要一种可以支持列和表的格式

我想添加的另一件事是,我想从自定义模板创建收据。我想使用.rtf文件作为模板,并向该文件添加必要的值。但是在用java编辑了这个文件之后,它看起来并不好。如果有人能给我推荐一个合适的格式就更好了

编辑:

我成功地获得了一个现成的代码,可以将jtable打印成pdf格式,而且运行良好。代码如下


文件=新文件(页面大小为A4);
试一试{
PdfWriter writer=PdfWriter.getInstance(文档,新文件输出流(“C:\Users\arun\Desktop\jTable.pdf”)

但是表格打印在靠近页面左侧的地方,我想留下一个左边距,同时还要打印每个表格列的标题

我尝试了document.setmargins()。但它不起作用。关于列的标题,我没有线索

  • 像iText这样的第三方工具将有助于创建rtf文件。特别是如果您想创建表
  • 我建议从包含模型的类中编写数据,而不是试图从GUI(JTable)中提取数据
  • 当您还不熟悉Swing时,我强烈建议您不要使用GUI构建器来生成应用程序。(即使如此,我也不建议使用GUI构建器,只是没有那么强烈)

  • 您可以通过
    JTable.getModel()
    从JTable检索
    TableModel
    ,使用
    model.getRowCount()
    model.getColumnCount()
    model.getValueAt(行、列)迭代内容来提取数据
    ,如果不需要任何第三方工具,最后将值打印到普通的
    FileWriter


    请参阅API文档中的、。

    我对rtf格式不是很特别。我只是希望能够向文件中添加列。关于提取数据,Jtable是使用数据库查询填充的。因此,我认为您的选项不会起作用。除了直接从数据库填充表外,您应该分离模型并查看一些.Al所以,您的问题是不清楚您是否希望以rtf格式编写文件?我并不特别了解如何使用rtf格式。我只希望表格按原样打印到文件中(我的意思是和表格本身一样).如果我们保留该程序,任何适合于蛹的格式都会更好simpler@Hello,在这种情况下,第1部分变得更简单,只需通过FileWriter或类似的工具将数据写入文本文件。不使用任何第三方工具就可以将表写入文件中吗?我只想保持它的简单性,我没有真正的定义y指向任何特定格式。当然,您可以使用标准java.io将JTable模型的内容转储到一个文件中。如果有必要,可以稍后提供一个片段。如果可能,请提供一个片段。请确保表本身作为表打印到文件中,并且只打印值。谢谢您的关注。我管理了to获得相当有效的代码
      document.open();
    
      PdfContentByte cb = writer.getDirectContent();
    
      cb.saveState();
      Graphics2D g2 = cb.createGraphicsShapes(500, 500);
    
      Shape oldClip = g2.getClip();
      g2.clipRect(0,0, 500, 500);
    
      table.print(g2);
      g2.setClip(oldClip);
    
      g2.dispose();
      cb.restoreState();
      JOptionPane.showMessageDialog(null,"done","done",JOptionPane.INFORMATION_MESSAGE);
    } catch (Exception e) {
      System.err.println(e.getMessage());
    }
    document.close();