Excel编程中关于跨列单元格的自适应高度的解决办法

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

今天修改一个用Excel的报表,有一个数据格是跨两列,一般单格的数据格用自动换行就可以实现自适应高度,但是跨列是不行的.查找google良久,也没发现适合的办法,一阵头痛之后,突然有了灵感,于是马上做试验,还真的实现了.先写出来,如果有困于这个问题的朋友偶然路过,或许还能有一点用处.

原理:在另外一个sheet里面利用单元格换行和自适应高度的特性,将一个试验单元格宽度设置成实际跨列单元格的宽度,然后将需要输入的字符放入该试验单元格,取得高度返回给实际跨列单元格就可以了.

以下是vb的代码

Private Sub Command1_Click()

Dim objExcel As New Excel.Application

Dim wkSheet As Excel.Worksheet

objExcel.Workbooks.Open "E:\book1.xls"

Set wkSheet = Worksheets("Sheet1")

wkSheet.Select

Dim iWidth As Double

iWidth = wkSheet.Columns("A:A").ColumnWidth + wkSheet.Columns("B:B").ColumnWidth

Set wkSheet = Worksheets("Sheet2")

wkSheet.Select

wkSheet.Columns("A:A").ColumnWidth = iWidth

Range("A1").Select

With Selection

.HorizontalAlignment = xlGeneral

.VerticalAlignment = xlCenter

.WrapText = True

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

ActiveCell.Value = "dsfsdafsdafasfsdafsadfdsafsdafa"

Dim iHeight As Double

iHeight = ActiveCell.RowHeight

Set wkSheet = Worksheets("Sheet1")

wkSheet.Select

Range("A1:B1").Select

With Selection

.HorizontalAlignment = xlGeneral

.VerticalAlignment = xlCenter

.WrapText = True

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = True

End With

Rows("1:1").Select

Selection.RowHeight = iHeight

Range("A1:B1").Select

ActiveCell.Value = "dsfsdafsdafasfsdafsadfdsafsdafa"

objExcel.ActiveWorkbook.SaveAs "e:\book2.xls"

objExcel.AlertBeforeOverwriting = False

objExcel.Quit

End Sub

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航