昨天多方寻所无果,之后最终决定采用Excel。但是今天一早起来试验了一下发现,使用Excel意味着无法在我们的程序中控制报表的预览和打印,只能输出一个Excel的表格,然后让用户自己把它打印出来。但是由于手上这个软件的需求规定,不能让业务员轻易的改动表单的内容,所以这个方案只好作罢。
归纳一下所谓的郁闷的报表问题其实无非就是由单元格文本内容超长,导致自动涨大,影响其他单元格的排版问题。在今天实验之后发现,其实单元格的自动加高并不会覆盖下面的单元格,它会把下面的内容往下移。但是位于同一行的其他单元格还是无法跟着伸长。最终我解决这个问题的方法是这样的:
1、计算文本内容的长度
2、用这个长度除以单元格的宽度,记下商为LineCount
3、然后把所有LineCount中取出最大的那个
4、根据最大的LineCount成倍加高所有的单元格
其实也就是手动进行了报表版式的修改。这个做法虽然比较笨,但是至少还是能够工作的。其中特别的一点是,取出文本内容的长度如何来做。我记忆中是有一个GDI函数可以来完成这个任务,但是由于时间原因,我最终是使用一个AutoSize为True的Label来做的,填入Text,取出Size.Height。我承认,这也是一个笨办法,但是只要它能用,它也就不是一个笨办法了。