如何在VB中格式化打印报告的结构数组?

时间:2018-07-07 15:32:24

标签: vb.net

我正在研究一个程序,该程序接受来自文本框的输入并将其输入到结构数组中。结构包括名称的字符串变量,5个double的数组,最后是一个double的数组,用于保存前一个数组中值的平均值。我试图将整个结构数组发送到可打印的报告,但是在为打印机格式化如此大量的数据时遇到了很大的困难。为了更好地解释我的困难,这是我到目前为止所写的内容:

'Print the report header
e.Graphics.DrawString("Class Report",
                      New Font("Courier New", 12, FontStyle.Bold),
                      Brushes.Black,
                      150,
                      10)

e.Graphics.DrawString("Date and Time: " & Now.ToString(),
                      New Font("Courier New", 12, FontStyle.Bold),
                      Brushes.Black,
                      10,
                      38)

'Prints the column headers
e.Graphics.DrawString(String.Format("{0, 20} {1, 20} {2, 20}",
                                    "Name",
                                    "Test Scores",
                                    "Average"),
                      New Font("Courier New", 12, FontStyle.Bold),
                      Brushes.Black,
                      10,
                      66)

'prints the data
For intCount = 0 To 5
    e.Graphics.DrawString(String.Format("{0, 20} {1, 5} {2, 5} {3, 5} {4, 5} {5, 5} {6, 5} {7, 20}",
                                        ClassScores(intCount).strName,
                                        ClassScores(intCount).dblTestScores(0),
                                        ClassScores(intCount).dblTestScores(1),
                                        ClassScores(intCount).dblTestScores(2),
                                        ClassScores(intCount).dblTestScores(3),
                                        ClassScores(intCount).dblTestScores(4),
                                        ClassScores(intCount).dblTestAvg),
                          New Font("Courier New", 12, FontStyle.Regular),
                          Brushes.Black,
                          150,
                          165)
Next

现在,此代码将引发system.format异常。这对我来说非常令人困惑,因为以前我相当确定我在尝试对实际打印方式进行一些更改(即将结构转换为并行字符串数组)之前拥有了正确的代码,但是我放弃了这一尝试并尝试获取回到代码的先前版本,显然没有成功。

话虽这么说,但是当我实际使用代码处理打印文档时,遇到了许多问题。例如,标题行并未居中,而是悬挂在文档的右上角。其次,当打印实际数据时,所有数据都打印在一行上,名称打印在一列中,所有数字打印在另一列中,都打印在彼此的顶部。具体列举我在寻求帮助的方面:

  1. 如何使用此代码清除system.format异常?

  2. 当循环循环时,如何确保新数据适合打印文档中的新行?

  3. 我可以使用一些帮助来理解格式字符串号,尤其是有关标题以及确定列的宽度的方式。

非常感谢。该程序有很多动态内容,因此,如果您想了解我正在使用的数据类型的更多背景信息,请告诉我,因为我不知道我所提供的信息有多大帮助

1 个答案:

答案 0 :(得分:1)

问题似乎是,您传递给第二个plugins { // Plugin to build .exe files. id("edu.sc.seis.launch4j") version "2.4.4" } dependencies { // JNA, used to e.g. make a program pinnable to taskbar. compile("net.java.dev.jna:jna:4.5.1") compile("net.java.dev.jna:jna-platform:4.5.1") } launch4j { mainClassName = "nl.mynamespace.myapp.MainKt" icon = "$projectDir/src/main/resources/myapp32.ico" manifest = "$projectDir/releasing/launch4j/myapp.manifest" } 调用的格式说明符期望八个值(索引0到7),而您仅传递七个(1 x名称,5 x分数,1) x平均)。您的格式说明符应为:

  

{0,20} {1,5} {2,5} {3,5} {4,5} {5,5} {6,20}

而不是

  

{0,20} {1,5} {2,5} {3,5} {4,5} {5,5} {6,5} {7,20}