Foxtable(狐表)用户栏目专家坐堂 → EXCEL报表行高自动调节的问题


  共有4604人关注过本帖树形打印复制链接

主题:EXCEL报表行高自动调节的问题

帅哥哟,离线,有人找我吗?
audience68
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
EXCEL报表行高自动调节的问题  发帖心情 Post By:2014/9/18 23:32:00 [显示全部帖子]

设计的EXCEL报表模板,在模板设计中已经把行高设计成自动调整,单元格也设计成自动换行。但是在用该模板生成EXCEL报表时,行高无法根据列中的内容自动调整行高来显示全部内容,不知哪位大虾有好的建议和方法。谢谢了!

不知是否可以不需要代码而仅仅在报表模板中设置就可以解决?



 回到顶部
帅哥哟,离线,有人找我吗?
audience68
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/9/19 10:36:00 [显示全部帖子]

研究了二位高手的指导,还是不行,依葫芦画瓢总是不成,按照帅哥哟,离线,有人找我吗?blackzhu的例子,但我的这个单元格是CDEF四格单元格合并后的一个合并单元格,在参数Rg = Ws.Range("C10")中的C10该如何填写?(我的是C10,D10,E10,F10四格单元格合并成一个单元格)


也感谢有点甜的帮助,但你的代码我不知道该如何与生成的报表结合成一个代码,我的报表情况如下:"Attachments\监造周报.xls")/"Reports\监造周报.xls" ,不知能否帮我写一个比较完整的代码,谢谢了。

 回到顶部
帅哥哟,离线,有人找我吗?
audience68
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/9/19 21:19:00 [显示全部帖子]

请问有点甜,代码Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\Reports.xls")中的"D:\Reports.xls"是什么意思,我需要按照什么路径来设置我的代码?

 回到顶部
帅哥哟,离线,有人找我吗?
audience68
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/9/19 21:39:00 [显示全部帖子]

有点甜,你好
这是我编的代码,麻烦帮我看看是否对

Dim Book As New XLS.Book(ProjectPath & "Attachments\监造周报.xls")
Dim 
fl As String = ProjectPath & "Reports\监造周报.xls"
Book.Build() 
'生成细节区
Book.Save(fl) 
'保存工作簿
Dim 
Proc As New Process '打开工作簿
Proc.File = fl
Proc.Start()

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("Reports\监造周报.xls")

Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim Rg As MSExcel.Range = Ws.Cells
Rg.EntireColumn.AutoFit   '自动调整列宽

Rg.EntireRow.AutoFit  '自动调整行高

App.Visible = True


以上代码无法起到自动调整行高的目的,我怀疑是不是自动调整行高对合并单元格不起作用?还请高手指点


 回到顶部
帅哥哟,离线,有人找我吗?
audience68
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/9/19 21:41:00 [显示全部帖子]

Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("Reports\监造周报.xls")语句已经修改为Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(ProjectPath & "Reports\监造周报.xls")了

 回到顶部
帅哥哟,离线,有人找我吗?
audience68
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/9/19 21:46:00 [显示全部帖子]

经过测试EXCEL,发现对于合并的单元格,自动调节行高的功能不起作用图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
audience68
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/11/24 17:59:00 [显示全部帖子]

再次请教各位高手,我的备注内容较多,生成EXCEL报表时,内容突破了EXCEL规定的行高高限409,不知该如何处理,才能将全部内容显示出来?

 回到顶部
帅哥哟,离线,有人找我吗?
audience68
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/11/24 19:01:00 [显示全部帖子]

甜版,我将两行合并后,设置合并后的行高,还是只能409,不能超过409,所以通过合并是无法解决的

 回到顶部
帅哥哟,离线,有人找我吗?
audience68
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/11/24 20:29:00 [显示全部帖子]

甜版,我做了一个变通,把WORD报表和EXCEL报表做了一个结合,在生成报表的按钮中把两种报表的代码都写进去,这样就同时生成两个报表,我觉得基本解决了内容太多,EXCEL单元格限制的问题,但是我想把这两个文件同时生成在一个PDF文件中,不知是否可行,望指教或帮我改一下代码。我现在的代码如下:

Dim tm1 As String  = ProjectPath & "Attachments\监造周报1.docx" '指定模板文件

Dim fl1 As String = ProjectPath & "Reports\监造周报1.docx" '指定目标文件

Dim fl2 As String = ProjectPath & "Reports\监造周报1.pdf" '指定目标PDF文件

Dim wrt As New WordReport(Tables("监造周报"),tm1,fl1) '定义一个WordReport

wrt.Build() '逐行生成报表

wrt.SaveToPDF(fl2) '保存为PDF文件

wrt.Quit() '退出

Dim Proc1 As New Process '打开PDF文件

Proc1.File = fl2

Proc1.Start()

 

Dim Book As New XLS.Book(ProjectPath & "Attachments\监造周报.xls")

Dim fl As String = ProjectPath & "Reports\监造周报.xls"

Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表

'Sheet.Locked = True '禁止编辑

With Sheet.PrintSetting

    '页眉左边为日期,中间为时间,右边为表名

    .Header = "&L&D &C&T &R&F"

    '在页脚右边打印页号和总页数

    .Footer = "&R第&P页,总&N页"

End With

Book.Build() '生成细节区

Book.Save(fl) '保存工作簿

 

Dim App As New MSExcel.Application

try

    App.DisplayAlerts = False '加上此行可禁止弹出合并前的提示

    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)

    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)

    Dim sr As Integer = 1

    Dim prev As String = ws.Cells(1,1).Text

    For r As Integer = 2 To Ws.UsedRange.Rows.count

        If ws.Cells(r, 1).Text <> prev AndAlso ws.Cells(r, 1).Text <> Nothing Then

            Dim Rg As MSExcel.Range = ws.Range("A" & sr & ":A" & r-1)

            Rg.Merge

            sr = r

            prev = ws.Cells(r, 1).Text

        End If

    Next

    Wb.Save

    App.Visible = True

   

catch ex As exception

    msgbox(ex.message)

    'app.quit

End try

app.quit

 

 

Dim flt1,flt2 As String

flt1 = ProjectPath & "Reports\监造周报.xls"

flt2 = ProjectPath & "Reports\监造周报.pdf"

Dim App1 As New MSExcel.Application

Dim Wb1 As MSExcel.WorkBook = App1.WorkBooks.Open(flt1)

wb1.ExportAsFixedFormat(MSExcel.XlFixedFormatType.xlTypePDF, flt2)

App1.Quit

Dim Proc As New Process '打开工作簿

Proc.File = flt2

Proc.Start()


 回到顶部
帅哥哟,离线,有人找我吗?
audience68
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:319 积分:2494 威望:0 精华:0 注册:2012/5/19 22:40:00
  发帖心情 Post By:2014/11/24 21:35:00 [显示全部帖子]

甜版,我想干脆全部用WORD模板来做报表,但是不知道用WORD做能否像EXCEL模板那样根据不同数量的行而自动调整报表的行数?

 回到顶部
总数 13 1 2 下一页