将Jtable作为表打印到文件中

时间:2011-02-09 17:34:40

标签: java swing netbeans

我正在为财务管理创建一个应用程序。所以我正在努力让最终的工作得到打印摘要。 摘要页面由不同的表组成,每个表后跟两个标签和文本字段。 如果有人可以帮助我解决这个问题,那将会很棒。

我想要的只是将填充的Jtable打印到文件中。

我不是Java的专家,我使用Netbeans编码gui。

另外关于fileformat我认为它必须.rtf支持行等​​。希望从这里创建rtf文件不会有困难。

Ps:我不是特别关注格式.rtf我只想要一种可以支持列和表的格式。

我想要添加的另一件事是我想从自定义模板创建收据。我正在考虑将.rtf文件用作模板并向文件添加必要的值。但是在用java编辑文件后,它似乎看起来不错。如果有人能建议我合适的格式会更好

编辑:

我设法获得了一个现成的代码,用于将jtable打印到pdf,并且它运行良好且良好。代码如下

Document document = new Document(PageSize.A4); try { PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:\Users\arun\Desktop\jTable.pdf"));

  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();

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();

但桌子正在靠近页面的左侧打印。我想留下左边距,并且还要打印每个表格列的标题。

我试过了document.setmargins()。但它没有用。关于专栏的标题,我不知道。

2 个答案:

答案 0 :(得分:1)

  1. 像iText这样的第三方工具将有助于创建rtf文件。特别是如果你想创建表格。
  2. 我建议从包含模型的类中编写数据,而不是试图将其从GUI中删除(JTable)。
  3. 我强烈建议您在不熟悉Swing时使用GUI Builder生成应用程序。 (即便如此,我建议不要这样做,但不要那么强烈。)

答案 1 :(得分:1)

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

请参阅API文档中的JTableTableModelFileWriterBufferedWriter