以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=81239)

--  作者:9602084
--  发布时间:2016/2/22 13:54:00
--  [求助]
Dim Book As New XLS.Book(ProjectPath & "Attachments\\干部职工基本情况登记表.xls")
    Dim fl As String = ProjectPath & "Reports\\干部职工基本情况登记表" & Tables("基本信息").current("姓名") & Tables("基本信息").current("档案编号") & " .xls"
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    
    Dim cmd As new SQLCommand
    Dim dt As DataTable
    Dim str As String
    cmd.C
    
    If Forms("综合报表").Controls("CheckBox1").checked = True Then
        sheet(2,8).value = "<all>"
        For i As Integer = 0 To Tables("基本信息").rows.count-1
            str =""
            cmd.CommandText="s elect * f rom {工作简历} where 身份证号码=\'" & Tables("基本信息").Rows(i)("身份证号码") & "\' Order by 任职时间"
            dt = cmd.ExecuteReader
            If dt.DataRows.Count > 0 Then
                For Each dr1 As DataRow In Dt.DataRows
                    str = str & iif(dr1.Isnull("任职时间"),"       ",format(dr1("任职时间") ,"yyyy.MM")) & StrToWide("-") &  iif(dr1.Isnull("任职结束"),"       ",format(dr1("任职结束"),"yyyy.MM")) & "  " & dr1("工作单位") & dr1("担任职务") & vbcrlf
                Next
            End If
            MessageBox.show( i & "--"  & 10+i*12 & "--" & str)
            sheet(10 + i*12,2).value = str
        Next
    Else
        sheet(2,8).value = ""
        
        cmd.CommandText="s elect * f rom {工作简历} where 身份证号码=\'" & Tables("基本信息").current("身份证号码") & "\' Order by 任职时间"
        dt = cmd.ExecuteReader
        If dt.DataRows.Count > 0 Then
            For Each dr1 As DataRow In Dt.DataRows
                str = str & iif(dr1.Isnull("任职时间"),"       ",format(dr1("任职时间") ,"yyyy.MM")) & StrToWide("-") &  iif(dr1.Isnull("任职结束"),"       ",format(dr1("任职结束"),"yyyy.MM")) & "  " & dr1("工作单位") & dr1("担任职务") & vbcrlf
            Next
        End If
        
        Sheet(10,2).Value = str
    End If
    Book.Build() \'生成细节区
    Book.Save(fl) \'保存工作簿
    Dim Proc As New Process \'打开工作簿
    Proc.File = fl
    Proc.Start()
上面报表代码中,红色部分代码,能够正常生成str ,但是写入不了 sheet(10 + i*12,2),请教高手,代码应该怎么修改。
[此贴子已经被作者于2016/2/22 13:59:47编辑过]

--  作者:大红袍
--  发布时间:2016/2/22 14:15:00
--  

能够生成,肯定就能够写入。

 

拷贝一份 Attachments\\干部职工基本情况登记表.xls 然后把这句代码去掉

 

Book.Build() \'生成细节区

 

然后打开那个xls模板,看是否填入了内容。


--  作者:大红袍
--  发布时间:2016/2/22 14:16:00
--  
 自己无法调试,就上传具体例子测试。
--  作者:9602084
--  发布时间:2016/2/22 14:37:00
--  [求助]
按照二楼的调试办法,内容能够写入,一但正式调用,就出问题,是模板的问题吗?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:干部职工基本情况登记表.xls


--  作者:大红袍
--  发布时间:2016/2/22 14:42:00
--  

 你思路有问题,与其这样做,还不如去编写报表事件

 

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

 


--  作者:大红袍
--  发布时间:2016/2/22 14:43:00
--  
如果要在你原来的代码上改的话,红色的赋值代码,要写在build的后面才对。
--  作者:9602084
--  发布时间:2016/2/23 17:55:00
--  [原创]
自己的解决办法,先生成报表,然后修改报表的内容。