Foxtable(狐表)用户栏目专家坐堂 → 导出表格时,如下代码中怎么设置自动列宽,表格线变成实线,然后第一次导出保存文件名为表A,导出时依次保存不覆盖文件?


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

主题:导出表格时,如下代码中怎么设置自动列宽,表格线变成实线,然后第一次导出保存文件名为表A,导出时依次保存不覆盖文件?

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


加好友 发短信
等级:小狐 帖子:380 积分:3154 威望:0 精华:0 注册:2012/11/16 12:19:00
导出表格时,如下代码中怎么设置自动列宽,表格线变成实线,然后第一次导出保存文件名为表A,导出时依次保存不覆盖文件?  发帖心情 Post By:2024/5/16 9:25:00 [只看该作者]

导出表格时,如下代码中怎么设置自动列宽,表格线变成实线,然后第一次导出保存文件名为表A,下一次导出时保存文件名为表A1,A2,A3,依次保存不覆盖文件?

Dim tbl As Table = Tables("表A")
Dim Book As New XLS.Book 
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Dim St2 As XLS.Style = Book.NewStyle
St2.Format = "yyyy-MM-dd"
Sheet.Cols(tbl.Cols("出生日期").Index).Style = st2
Dim hdr As Integer = tbl.HeaderRows '获得表头的层数
tbl.CreateSheetHeader(Sheet) '生成表头
Dim cnt As Integer
For c As Integer = 0 To tbl.Cols.Count - 1
    If tbl.Cols(c).Visible Then
        For r As Integer = 0 To tbl.Rows.Count - 1
            sheet(r + hdr, cnt).value = tbl(r, c)
        Next
        cnt = cnt + 1
    End If
Next
Book.Save("D:\reports\表A.xls")
Dim Proc As New Process '定义一个新的Process
Proc.File = "d:\Reports" '指定文件夹路径
Proc.Start()

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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/16 9:48:00 [只看该作者]

1、表格线:http://www.foxtable.com/webhelp/topics/1163.htm

2、重命名的话,建一个内部表只有一行一列,单元格填入序号比如1,那么第一次文件名为A1,就把单元格值+1,大概

……
dim a as integer = tables("某表").rows(0)(0)
Book.Save("D:\reports\A" & a & ".xls")
tables("某表").rows(0)(0) = a+1
Dim Proc As New Process '定义一个新的Process

3、自动列宽就需要另外处理了,先生成报表,然后另外使用vba控制:http://www.foxtable.com/webhelp/topics/2121.htm

Rg.EntireColumn.AutoFit   '自动调整列宽

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


加好友 发短信
等级:小狐 帖子:380 积分:3154 威望:0 精华:0 注册:2012/11/16 12:19:00
  发帖心情 Post By:2024/5/16 11:43:00 [只看该作者]

如我要设置单元格字号放在哪?代码怎么写下?

FontSize = 10 '设置字号

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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/16 11:56:00 [只看该作者]

比如

Dim Style As XLS.Style = Book.NewStyle() '定义新样式
Style.ForeColor = Color.Red 
'设置样式的字体颜色
Style.font = New Font("宋体",10)

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


加好友 发短信
等级:小狐 帖子:380 积分:3154 威望:0 精华:0 注册:2012/11/16 12:19:00
  发帖心情 Post By:2024/5/16 12:34:00 [只看该作者]

如下代码,所有单元格也都加了实线,字号也设置为10磅,想把表标题行设置为12磅,单元格还是10磅,导出有数据的行、列加边框线,其他地方不加线,怎么改下?


Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\表A.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim Rg As MSExcel.Range = Ws.Cells
Rg.EntireColumn.AutoFit '自动调整列宽
Rg.EntireRow.AutoFit '自动调整行高
Rg.Font.Size = 10
Rg.Borders.Linestyle = MSExcel.XlLineStyle.xlContinuous '边框线型
Rg.Borders.Weight = MSExcel.XlBorderWeight.xlThin'边框粗细
App.Visible = True

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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/16 13:30:00 [只看该作者]

Dim Rg As MSExcel.Range = Ws.UsedRange

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


加好友 发短信
等级:小狐 帖子:380 积分:3154 威望:0 精华:0 注册:2012/11/16 12:19:00
  发帖心情 Post By:2024/5/16 17:02:00 [只看该作者]


上面的代码完美实现了,但是发现有的表导出来的时候后面增加了好多空列,这是怎么回事?如果删除空列怎么写?


图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/16 17:31:00 [只看该作者]

完整代码?

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


加好友 发短信
等级:小狐 帖子:380 积分:3154 威望:0 精华:0 注册:2012/11/16 12:19:00
  发帖心情 Post By:2024/5/16 17:41:00 [只看该作者]

Dim tbl As Table = Tables("表A")
Dim Book As New XLS.Book
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Dim St1 As XLS.Style = Book.NewStyle
St1.Format = "yyyy-MM-dd"
Sheet.Cols(tbl.Cols("出生日期").Index).Style = st1

Dim hdr As Integer = tbl.HeaderRows '获得表头的层数
tbl.CreateSheetHeader(Sheet) '生成表头
Dim cnt As Integer
For c As Integer = 0 To tbl.Cols.Count - 1
    If tbl.Cols(c).Visible Then
        For r As Integer = 0 To tbl.Rows.Count - 1
            sheet(r + hdr, cnt).value = tbl(r, c)
        Next
        cnt = cnt + 1
    End If
Next
Book.Save("D:\reports\表A.xls")

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\reports\表A.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim Rg As MSExcel.Range = Ws.UsedRange
Rg.EntireColumn.AutoFit '自动调整列宽
Rg.EntireRow.AutoFit '自动调整行高
Rg.Font.Size = 11
Rg.Borders.Linestyle = MSExcel.XlLineStyle.xlContinuous '边框线型
Rg.Borders.Weight = MSExcel.XlBorderWeight.xlThin'边框粗细
App.Visible = True

Dim Proc As New Process '定义一个新的Process
Proc.File = "D:\Reports" '指定文件夹路径
Proc.Start()

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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/16 17:44:00 [只看该作者]

Dim tbl As Table = Tables("表A")
Dim Book As New XLS.Book
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Dim St1 As XLS.Style = Book.NewStyle
St1.Format = "yyyy-MM-dd"

Dim hdr As Integer = tbl.HeaderRows '获得表头的层数
tbl.CreateSheetHeader(Sheet) '生成表头
Dim cnt As Integer
For c As Integer = 0 To tbl.Cols.Count - 1
    If tbl.Cols(c).Visible Then
if tbl.Cols(c).IsDate
Sheet.Cols(cnt).Style = st1
next
        For r As Integer = 0 To tbl.Rows.Count - 1
            sheet(r + hdr, cnt).value = tbl(r, c)
        Next
        cnt = cnt + 1
    End If
Next
Book.Save("D:\reports\表A.xls")

 回到顶部