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


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

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/23 10:15:00 [显示全部帖子]

回复5楼,你根据表的路径,加上defaultFolder,就得到图片的完整路径了,那就能直接得到图片了。

 

之后,你赋值即可。

 

http://www.foxtable.com/help/topics/2043.htm

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/23 11:43:00 [显示全部帖子]

 类似这样写

 

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
        If dt.Cols(c).DataCol.ExtendType = ExtendTypeEnum.Images Then
            Dim path As String = ProjectPath & "Attachments/" & dt.rows(r)(c)
            If FileSys.FileExists(path) Then
                Sheet(r +1, c).Value = New XLS.Picture(GetImage(path))
            End If
        Else
            Sheet(r +1, c).Value = dt.rows(r)(c)
        End If
    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()


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/1 10:49:00 [显示全部帖子]


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/1 12:37: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.Rows(0).Height = 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.Rows(i+1).Height = 100
    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()

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/1 14:06:00 [显示全部帖子]

Dim dates As List(of String) = t.GetValues("计划加工日期")
For c As Integer = 0 To Dates.count-1
    Dim d As Date = Dates(c).split(" ")(0)
    If d.DayOfWeek = 0 Then
        Sheet(0, c+2).Value = "周日"
    Else
        Sheet(0, c+2).Value = d
    End If
Next

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/1 15:07:00 [显示全部帖子]

 例子发上来,不明白说什么。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/1 15:46: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.Rows(0).Height = 100
Sheet(0, 0).Value ="零部件编号"
Sheet(0, 1).Value ="零部件名称"

Dim d_start As Date = Tables("表一").Current("计划开始日期")
Dim cs As Integer = 2
Do While d_start <= Tables("表一").Current("计划结束日期")
   
    If d_start.DayOfWeek = 0 Then
        Sheet(0, cs).Value = "周日"
    Else
        Sheet(0, cs).Value = d_start & " "
    End If
    cs += 1
    d_start = d_start.AddDays(1)
Loop

Dim strs As List(of String) = t.GetValues("零部件编号")
For i As Integer=0 To strs.count-1
    sheet.Rows(i+1).Height = 100
    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)
   
    d_start = Tables("表一").Current("计划开始日期")
    cs = 2
    Do While d_start <= Tables("表一").Current("计划结束日期")
        Dim drlist As List(of DataRow) = t.Select("零部件编号='" & strs(i) & "' and 计划加工日期=#" & d_start & "#")
        If drlist.count>0 Then
            Dim ss As String=""
            For Each dr As DataRow In drlist
                ss=ss & "," & dr("加工内容")
            Next
            Sheet(i+1, cs).Value = ss.trim(",")
        End If
       
        cs += 1
        d_start = d_start.AddDays(1)
    Loop
Next
'打开工作簿
Book.Save("c:\test.xls")
Dim Proc As New Process
Proc.File = "c:\test.xls"
Proc.Start()


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/1 17:00:00 [显示全部帖子]

 呃,为了一个样式,全部代码都要改了。用vba去做

 

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 App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Add
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
ws.cells.rowheight = 100
ws.cells.Columnwidth = 20

ws.cells(1, 1).Value ="零部件编号"
ws.cells(1, 2).Value ="零部件名称"

Dim d_start As Date = Tables("表一").Current("计划开始日期")
Dim cs As Integer = 3
Do While d_start <= Tables("表一").Current("计划结束日期")
   
    If d_start.DayOfWeek = 0 Then
        ws.cells(1, cs).Value = "周日"
    Else
        ws.cells(1, cs).Value = d_start & " "
    End If
    cs += 1
    d_start = d_start.AddDays(1)
Loop

Dim strs As List(of String) = t.GetValues("零部件编号")
For i As Integer=0 To strs.count-1
    ws.cells(i+2, 1).Value = " " & strs(i) & " "
    Dim path As String = ProjectPath & "Attachments/" & t1.Find("零部件编号='" & strs(i) & "'")("图片")
    If FileSys.FileExists(path) Then
        ws.cells(i+2, 2).Select()
        ws.Shapes.AddPicture(path, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue,0, 0, 100, 80)
    End If
   
    d_start = Tables("表一").Current("计划开始日期")
    cs = 3
    Do While d_start <= Tables("表一").Current("计划结束日期")
        Dim drlist As List(of DataRow) = t.Select("零部件编号='" & strs(i) & "' and 实际完成日期=#" & d_start & "#")
        Dim ss As String=""
        Dim idxs As String = "-1,"
        If drlist.count>0 Then         
            For Each dr As DataRow In drlist
                ss=ss & "," & dr("加工内容")
                idxs &= dr("_Identify") & ","
            Next
        End If
        Dim idx As Integer = ss.length
        drlist = t.Select("零部件编号='" & strs(i) & "' and 计划加工日期=#" & d_start & "# and _Identify not in (" & idxs.trim(",") & ")")
        If drlist.count>0 Then
            For Each dr As DataRow In drlist
                ss=ss & "," & dr("加工内容")
            Next
           
        End If
        ws.cells(i+2, cs).Value = ss.trim(",")
        ws.cells(i+2, cs).Characters(0,idx).font.ColorIndex = 3
        ws.cells(i+2, cs).Characters(idx).font.ColorIndex = 1
        cs += 1
        d_start = d_start.AddDays(1)
    Loop
Next
App.Visible = True


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/2 9:34: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 App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Add
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
ws.cells.rowheight = 100
ws.cells.Columnwidth = 20

ws.cells(1, 1).Value ="零部件编号"
ws.cells(1, 2).Value ="零部件名称"

Dim d_start As Date = Tables("表一").Current("计划开始日期")
Dim cs As Integer = 3
Do While d_start <= Tables("表一").Current("计划结束日期")
   
    If d_start.DayOfWeek = 0 Then
        ws.cells(1, cs).Value = "周日"
    Else
        ws.cells(1, cs).Value = d_start & " "
    End If
    cs += 1
    d_start = d_start.AddDays(1)
Loop

Dim strs As List(of String) = t.GetValues("零部件编号")
For i As Integer=0 To strs.count-1
    ws.cells(i+2, 1).Value = " " & strs(i) & " "
    Dim path As String = ProjectPath & "Attachments/" & t1.Find("零部件编号='" & strs(i) & "'")("图片")
    If FileSys.FileExists(path) Then
        ws.Shapes.AddPicture(path, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue,ws.cells(i+2, 2).Left+0, ws.cells(i+2, 2).top+0, 100, 80)
    End If
   
    d_start = Tables("表一").Current("计划开始日期")
    cs = 3
    Do While d_start <= Tables("表一").Current("计划结束日期")
        Dim drlist As List(of DataRow) = t.Select("零部件编号='" & strs(i) & "' and 实际完成日期=#" & d_start & "#")
        Dim ss As String=""
        Dim idxs As String = "-1,"
        If drlist.count>0 Then
            For Each dr As DataRow In drlist
                ss=ss & "," & dr("加工内容")
                idxs &= dr("_Identify") & ","
            Next
        End If
        Dim idx As Integer = ss.length
        drlist = t.Select("零部件编号='" & strs(i) & "' and 计划加工日期=#" & d_start & "# and _Identify not in (" & idxs.trim(",") & ")")
        If drlist.count>0 Then
            For Each dr As DataRow In drlist
                If dr.IsNull("实际完成日期") Then
                    ss=ss & "," & dr("加工内容")
                End If
            Next
           
        End If
        ws.cells(i+2, cs).Value = ss.trim(",")
        ws.cells(i+2, cs).Characters(0,idx).font.ColorIndex = 3
        ws.cells(i+2, cs).Characters(idx).font.ColorIndex = 1
        cs += 1
        d_start = d_start.AddDays(1)
    Loop
Next
App.Visible = True


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/2 10:05:00 [显示全部帖子]


    If d_start.DayOfWeek = 0 Then
        ws.cells(1, cs).Value = "周日"
        ws.cells(1, cs).Interior.ColorIndex = 3
    Else
        ws.cells(1, cs).Value = d_start & " "
    End If

 

http://www.foxtable.com/help/topics/2121.htm

 


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