以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  excel报表问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=139879)

--  作者:jackchan120925
--  发布时间:2019/8/23 22:47:00
--  excel报表问题

老师请问下,我只做了如附件所示的excel报表,其中 <手动订单对账表>和<平台订单表1>为关联表,前者为主表。
导出后没有显示对应表格内容,而是如下图,请问是啥原因呀?

图片点击可在新窗口打开查看此主题相关图片如下:aa微信图片_20190823224605.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:手工订单对账单导出.xls




--  作者:有点蓝
--  发布时间:2019/8/23 23:11:00
--  
模板没有问题。确定有符合条件的数据
--  作者:jackchan120925
--  发布时间:2019/8/24 9:07:00
--  
确定有符合条件的数据,问题是我导出excel表格里面的内容完全就是截图的内容,哪怕没有符合条件的内容,那些引用也因该显示空白啊。怎么会显示模板引用的内容,带方括号那种
[此贴子已经被作者于2019/8/24 9:07:37编辑过]

--  作者:有点蓝
--  发布时间:2019/8/24 9:16:00
--  
这是不可能的,肯定没有用对。在菜单生成报表?还是自己写代码生成的?贴出代码看看
--  作者:jackchan120925
--  发布时间:2019/8/24 9:18:00
--  
用代码,代码如下,麻烦看下
Dim ct As Date =Cdate(Format(Date.now, "yyyy-MM-dd HH:mm:ss"))
Dim drpc As String =ct.year & format(ct.month, "00") & Format(ct.day, "00") & Format(ct.hour, "00") & Format(ct.minute, "00") & Format(ct.second, "00")

Dim pc As String = e.Form.Controls("TextBox5").value
If pc="" Then
    messagebox.show("请输入批次号")
    Return
End If

Dim drs As List (of DataRow) = DataTables("手动订单对账表").SQLSelect("对账_设定对账批次号=\'" & pc & "\'")
If drs.count<1 Then
    messagebox.show("表中没有对应批次的行")
    Return
End If


Dim Book As New XLS.Book(ProjectPath & "Attachments\\手工订单对账单导出.xls")


Dim sheet0 As xls.sheet= book.sheets(0)


sheet0(6,21).VALUE= "<对账_设定账期=\'" & pc & "\'>"


Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" \'设置筛选器

dlg.FileName = "手动订单对账单" & drpc & "导出时间" & drpc

If dlg.ShowDialog = DialogResult.Ok Then
    
    
    
    
    
    Book.Save(dlg.FileName)
    
    
    Dim Proc As New Process
    Proc.File = dlg.FileName
    Proc.Start()
    
End If

--  作者:有点蓝
--  发布时间:2019/8/24 9:19:00
--  
Build如果Book来自于一个模板文件,必须先调用方法,才能生成细节区。

示例:

Dim Book As New XLS.Book(ProjectPath & "Attachments\\出库单.xls")
Book.Build() 
\'生成细节区
Book.Save(
"c:\\reports\\test.xls"\'保存工作簿
Dim
 Proc As New Process \'打开工作簿
Proc.File = 
"c:\\reports\\test.xls"
Proc.Start()


--  作者:jackchan120925
--  发布时间:2019/8/24 9:39:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:手工订单对账单导出.xls

我增加了build方法,也把条件改成了all,如附件所示,为什么导出来变成一片空白呢?

Dim ct As Date =Cdate(Format(Date.now, "yyyy-MM-dd HH:mm:ss"))
Dim drpc As String =ct.year & format(ct.month, "00") & Format(ct.day, "00") & Format(ct.hour, "00") & Format(ct.minute, "00") & Format(ct.second, "00")

Dim pc As String = e.Form.Controls("TextBox5").value
If pc="" Then
    messagebox.show("请输入批次号")
    Return
End If

Dim drs As List (of DataRow) = DataTables("手动订单对账表").SQLSelect("对账_设定对账批次号=\'" & pc & "\'")
If drs.count<1 Then
    messagebox.show("表中没有对应批次的行")
    Return
End If

Dim nms() As String = {"备注", "订单号", "收货人姓名","收货人地址",   "发货品名", "发货数量", "发货单价", "货值小计", "运费", "订单收款总计", "客户", "平台"}
Dim Book As New XLS.Book(ProjectPath & "Attachments\\手工订单对账单导出.xls")
book.sheets.add("对账单2")

Dim sheet0 As xls.sheet= book.sheets(0)
Dim sheet1 As xls.sheet= book.sheets("对账单2") \'从表,


sheet1(0,0).value = "账单批次:" & pc
sheet1(1,0).value = "手工订单"
sheet1(2,0).value = "导出人:" & user.name & "     导出时间:" & Date.now

For n0 As Integer =0 To nms.length-1 Step 1
    sheet1(3,n0).value = nms(n0)
Next

Dim i As Integer=0


For Each dr As DataRow In drs
    
    
    sheet1(i+4,0).value = dr("对账_备注1")
    sheet1(i+4,1).value = dr("订单号")
    sheet1(i+4,2).value = dr("收货人姓名")
    sheet1(i+4,3).value = dr("收货人省") &  dr("收件人市") &  dr("收件人区") & dr("收件人详细地址")
    sheet1(i+4,8).value = dr("订单金额_运费")
    Dim sum2 As Double = DataTables("平台订单表1").SQLCompute("SUM(手工订单参数_货款应收小计)", "原始订单信息_主单号=\'" & dr("订单号") & "\'")
    sheet1(i+4,9).value = dr("订单金额_运费") + sum2
    
    Dim drs1 As List (of DataRow) = DataTables("平台订单表1").SQLSelect("原始订单信息_主单号=\'" & dr("订单号") & "\'")
    For Each dr1 As DataRow In drs1
        
        sheet1(i+4,4).value = dr1("订单货品验证_产品链接名称")
        sheet1(i+4,5).value = dr1("订单货品验证_产品链接数量")
        sheet1(i+4,6).value = dr1("手工订单参数_手工订单连接单价")
        sheet1(i+4,7).value = dr1("手工订单参数_货款应收小计")
        sheet1(i+4,10).value = dr1("平台备案_客户名称")
        sheet1(i+4,11).value = dr1("平台备案_平台名称")
        i=i+1
    Next
    
    
    
    
Next
\'sheet0(1,21).VALUE= "<ALL>"
\'sheet0(6,21).VALUE= "<对账_设定账期=\'" & pc & "\'>"


Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" \'设置筛选器

dlg.FileName = "手动订单对账单" & drpc & "导出时间" & drpc

If dlg.ShowDialog = DialogResult.Ok Then
    
    
    Book.Build()
    
    
    Book.Save(dlg.FileName)
    
    
    Dim Proc As New Process
    Proc.File = dlg.FileName
    Proc.Start()
    
End If

--  作者:有点蓝
--  发布时间:2019/8/24 9:45:00
--  
上传具体实例测试