以列格式打印数据的最佳方法是什么?
我正在用Python读取一种不太友好的数据格式,然后把它转换成更容易阅读的格式。我输出的记录通常只包含姓、名和房间代码。
我想输出一系列页面,每个页面上有一部分连续的记录,分成多列,每列也包含一部分连续的记录。(换句话说,你会先读完第一列,再读第二列,接着是第三列,最后再从下一页开始...)
我现在面临的问题是,输出格式几乎只能用HTML(还有JavaScript、CSS等)。那么,怎样才能把数据弄成这种列的格式呢?比如,如果我确定纸张的可打印区域可以容纳20条记录竖着和5条横着,那我就可以轻松打印出5x20的表格,但我不知道有没有办法表示分页,也不知道怎么计算程序上能放多少条记录。
你会怎么处理这个问题呢?
补充说明:我之所以说输出有限制,是因为我必须在一台电脑上生成文件,然后把它带到另一台不能安装新软件的电脑上,而现有软件的选择也不太理想。这个文件最终只会用来打印(这才是最终用户实际使用的),但我在可以打印的电脑上的时间有限,所以我需要提前把文件准备好,能马上打印,而不需要太多调整。
现在我找到了一款可以在目标机器上使用的文字处理软件,所以我打算看看能否针对这个软件的格式进行输出。
补充说明:一旦我知道可以使用文字处理软件,我就做了一个简单的框架文件,设置了我想要的格式(列和制表符设置、使用小字号的等宽字体等),然后测量了每列每行能容纳多少个字符,以及每列能有多少行。我仔细观察了运行情况,以确保没有奇怪的行溢出了每行字符的限制(当然,使用等宽字体的话,这种情况不应该发生,但有多少次你发现“应该”不发生的事情偏偏发生了呢?)
如果目标机器上没有我可以使用的文字处理软件,我可能会考虑使用PDF作为输出格式。
1 个回答
“如果我确定纸张的可打印区域可以垂直放20条记录,水平放5条记录”
其实你是知道的。
你知道纸张的大小,也知道字体的大小,这些都可以很简单地算出来。
“几乎肯定只限于HTML...”这句话听起来没什么意义。这个是网页应用吗?页面可以有“上一页”和“下一页”按钮来翻页吗?你可以选择一个看起来不错的大小,然后显示一整页,并加上“上一页”和“下一页”按钮。
如果你想要的是一个可以正确打印的HTML页面,那就比较难了。虽然有一些CSS的技巧可以用,但我觉得你会更喜欢创建一个PDF文件。
可以去下载PyX或者ReportLab,这样可以生成一个打印效果好的PDF。
就我个人而言,我对这些事情没有耐心。我通常会把这些内容放到CSV文件里。我的用户可以用电子表格工具打开CSV文件(Open Office Org有一个不错的工具),然后调整列的宽度,最后打印出来。