Foxtable(狐表)用户栏目专家坐堂 → Excel报表如何导出图片?


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

主题:Excel报表如何导出图片?

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


加好友 发短信
等级:二尾狐 帖子:568 积分:4728 威望:0 精华:0 注册:2013/2/18 17:46:00
Excel报表如何导出图片?  发帖心情 Post By:2014/6/23 8:45:00 [显示全部帖子]

如果是图片列,在用Excel报表 导出数据 时,怎么处理?

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


加好友 发短信
等级:二尾狐 帖子:568 积分:4728 威望:0 精华:0 注册:2013/2/18 17:46:00
  发帖心情 Post By:2014/6/23 8:52:00 [显示全部帖子]

导出数据

虽然Foxtable已经有导出Excel的功能,但是不够灵活。
如果你有更多的要求,可以用Excel报表来实现导出功能。

例如下面的代码,导出订单表,用红色背景标出折扣超过0.15的单元格:

Dim dt As Table = Tables("订单")
Dim
Book As New XLS.Book '定义一个Excel工作簿
Dim
Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
Dim
Style As Xls.Style = Book.NewStyle '新建一个样式
Style.BackColor = Color.Red '样式的背景颜色设为红色
For
c As Integer = 0 To dt.Cols.Count -1 '添加列标题
    Sheet(0, c).Value = dt.Cols(c).Name
Next
For
r As Integer = 0 To dt.Rows.Count - 1 '填入数据
   
For c As Integer = 0 To dt.Cols.Count -1
        Sheet(r +1, c).Value = dt.rows(r)(c)
    Next
    If
dt.rows(r)("折扣") >= 0.15 Then '如果折扣大于等于0.15
        Sheet(r + 1,dt.Cols("折扣").Index).Style = Style '设置折扣单元格的样式
   
End If
Next

'打开工作簿

Book.Save("c:\reports\test.xls")
Dim
Proc As New Process
Proc.File = "c:\reports\test.xls"
Proc.Start()


此主题相关图片如下:1560.png
按此在新窗口浏览图片

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


加好友 发短信
等级:二尾狐 帖子:568 积分:4728 威望:0 精华:0 注册:2013/2/18 17:46:00
  发帖心情 Post By:2014/6/23 10:12:00 [显示全部帖子]

Sheet(10,2).Value = New XLS.Picture(GetImage("c:\Foxtable.Ico"))
每个单元格必须一一指定文件路径吗,不能象产品列一样直接从 Tables("订单") 中导出吗?

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


加好友 发短信
等级:二尾狐 帖子:568 积分:4728 威望:0 精华:0 注册:2013/2/18 17:46:00
  发帖心情 Post By:2014/6/23 11:36:00 [显示全部帖子]

还是没搞懂,版主帮我改一下代码。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:excel报表.table


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


加好友 发短信
等级:二尾狐 帖子:568 积分:4728 威望:0 精华:0 注册:2013/2/18 17:46:00
  发帖心情 Post By:2014/7/1 10:36:00 [显示全部帖子]

 Sheet(r +1, c).Value = New XLS.Picture(GetImage(path))
插入图片的左边距,上边距,高度,宽度怎么设定?

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


加好友 发短信
等级:二尾狐 帖子:568 积分:4728 威望:0 精华:0 注册:2013/2/18 17:46:00
  发帖心情 Post By:2014/7/1 12:07:00 [显示全部帖子]

Dim cmd As New SQLCommand '定义一个SQL命令
Dim t As DataTable '定义一个数据表变量
Dim Count As Integer = 0
cmd.CommandText =  "Select * From {表三} Where  零部件编号 like '" & Tables("表一").Current("任务单编号") & "-" & "%' "
t = cmd.ExecuteReader() '生成一个临时表


Dim cmd1 As New SQLCommand '定义一个SQL命令
Dim t1 As DataTable '定义一个数据表变量
cmd.CommandText =  "Select * From {表二} Where  零部件编号 like '" & Tables("表一").Current("任务单编号") & "-" & "%' "
t1 = cmd.ExecuteReader() '生成一个临时表

Dim Book As New XLS.Book '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
Sheet.DefaultColumnWidth = 100 '设置默认列宽    DefaultRowHeight
Sheet.DefaultRowHeight = 100        报表的行高不是我设定的默认行高?
Sheet(0, 0).Value ="零部件编号"
Sheet(0, 1).Value ="零部件名称"
Dim dates As List(of String) = t.GetValues("计划加工日期")
For c As Integer = 0 To Dates.count-1
    Sheet(0, c+2).Value = Dates(c).split(" ")(0)
Next
Dim strs As List(of String) = t.GetValues("零部件编号")
For i As Integer=0 To strs.count-1
    Sheet(i+1, 0).Value = strs(i)
Dim path As String = ProjectPath & "Attachments/" & t1.Find("零部件编号='" & strs(i) & "'")("图片")


    Sheet(i+1, 1).Value = New XLS.Picture(GetImage(path),1,1,100,80)
    For c As Integer = 0 To  Dates.count-1
        Dim drlist As List(of DataRow) = t.Select("零部件编号='" & strs(i) & "' and 计划加工日期=#" & Dates(c) & "#")
        If drlist.count>0 Then
            If drlist(0)("零部件编号")=strs(i) Then
                Dim ss As String=""
                For Each dr As DataRow In drlist
                    ss=ss & "," & dr("加工内容")
                Next
                Sheet(i+1, c+2).Value = ss.trim(",")
            End If
        End If
    Next
Next
'打开工作簿
Book.Save("c:\test.xls")
Dim Proc As New Process
Proc.File = "c:\test.xls"
Proc.Start()

 

 

 


此主题相关图片如下:1565.png
按此在新窗口浏览图片

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


加好友 发短信
等级:二尾狐 帖子:568 积分:4728 威望:0 精华:0 注册:2013/2/18 17:46:00
  发帖心情 Post By:2014/7/1 13:20:00 [显示全部帖子]

版主,怎么改?


图片点击可在新窗口打开查看此主题相关图片如下:1567.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:二尾狐 帖子:568 积分:4728 威望:0 精华:0 注册:2013/2/18 17:46:00
  发帖心情 Post By:2014/7/1 14:39:00 [显示全部帖子]

假设表中有三列  计划加工开始日期  计划加工结束日期   计划加工日期

 

我希望  Sheet(0, 2)  数据为     计划加工开始日期             比如2013.11.1

          

           Sheet(0, 3)  数据为     计划加工开始日期+1              2013.11.2

                   .                                 .                           .

                   .                                 .                           .

                   .                                 .                           .           

 

          Sheet(0, 12)  数据为     计划加工结束日期                2013.11.11

 


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


加好友 发短信
等级:二尾狐 帖子:568 积分:4728 威望:0 精华:0 注册:2013/2/18 17:46:00
  发帖心情 Post By:2014/7/1 15:22:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


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


加好友 发短信
等级:二尾狐 帖子:568 积分:4728 威望:0 精华:0 注册:2013/2/18 17:46:00
  发帖心情 Post By:2014/7/1 15:56:00 [显示全部帖子]

表三有两列  计划加工日期实际完成日期

我希望如果加工已经完成,就把加工内容填在实际完成日期对应的单元格内,字体红色

如果实际完成日期为空值,就把加工内容填在计划加工日期对应的单元格内,字体黑色

 


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