序列不包含任何元素-WordManipulation

问题描述

我有一个功能,可以从Word模板将报告创建为pdf。函数通过SQL查询数据库获取数据,将其转换为自定义类,然后创建报告。我有这个奇怪的错误sequence contains no elements。它在wmO.CreateWord(data,outFile + docxExt)行上中断,我无法获得有关此错误的任何更多详细信息。我检查了所有返回的数据,数据一切正常。还有另一个问题,如果有人知道,我如何使用代码(例如徽标或签名)从数据库动态插入图像?

这是我上面做的所有功能

        Dim list As List(Of Int32) = HelperFunctions.GetGridSelection(idlist)
        Dim podjetjeId As Integer = Session("IDPodjetja")
        Dim izvajalecId As Integer = Session("IDIzvajalec")

        Dim vpdPodjetje As vpdPodjetje = db.vpdPodjetje.Find(podjetjeId)
        Dim vpdIzvajalec As vpdIzvajalec = db.vpdIzvajalec.Find(izvajalecId)
        Dim vpdEvakuacijaGL As vpdEvakuacijaGL = db.vpdEvakuacijaGL.Find(list(0))

        Dim query = $"SELECT Z.ImePriimek,Z.DatumRojstva,PO.NazivFirme,PO.Naslov AS NaslovPodjetja,CONVERT(NVARCHAR,Z.PostnaSt) AS PostnaSt_p,Z.Kraj AS Kraj_p,DM.NazivDM,GL.Kraj,GL.ProgramUsp AS ProgramUsp,GL.Periodika
                      FROM [vpd_razvoj02a].[dbo].[vpdEvakuacijaGL] AS GL INNER JOIN vpdEvakuacija AS E
                          ON GL.IDEvakGL = E.IDEvakGL LEFT JOIN vpdZaposleni AS Z
                          ON E.IdZaposleni = Z.IDZaposl LEFT JOIN vpdDelovnaMesta AS DM
                          ON Z.IDDm = DM.IDDm INNER JOIN vpdPodjetje AS PO
                          ON Z.IDPodj = PO.IDPodj "

        Dim queryBuilder As StringBuilder = New StringBuilder()
        Dim cond = nothing
        queryBuilder.Clear()
        queryBuilder.Append(query)

        cond = HelperFunctions.BuildsqlCondition(False,String.Format("Z.IDPodj={0}",podjetjeId))
        queryBuilder.AppendFormat(cond)

        cond = HelperFunctions.BuildsqlCondition(True,String.Format("GL.IDEvakGL={0}",list(0)))
        queryBuilder.AppendFormat(cond)

        Dim result = db.Database.sqlQuery(Of EvakuacijaReport2ExtendedModel)(queryBuilder.ToString).ToList()

        Dim dtIzv As dsCommon.IzvajalecDataTable = HelperFunctions.GetIzvajalec(HttpContext.Session("IDIzvajalec"),True)
        Dim dtPodj As dsCommon.PodjetjeDataTable = HelperFunctions.GetPodjetje(HttpContext.Session("IDPodjetja"))
        Dim filename As String = Guid.NewGuid().ToString()
        Dim file As String = ""
        Dim outFile As String = Server.MapPath(HelperFunctions.g_tempFiles) + filename
        Dim wm As New WordManipulation

        Dim item2 = wm.GetWordPredloga(word,dtIzv(0).ID)
        If item2 Is nothing Then
            Return ""
        End If
        file = Server.MapPath(g_Wordpredloge) + item2.Predloga

        Dim first As Boolean = True
        Dim wmO As New ESNETWordManipulation.WordManipulation()
        Dim wordL As New List(Of ESNETWordManipulation.ESNETWordData)

        Dim fieldsObjects As New Dictionary(Of String,Object)
        Dim fields As Dictionary(Of String,Object) = New Dictionary(Of String,Object)()

        Dim Datum = Now.Date.ToString(HelperFunctions.g_dateFormat)
        Dim Stpotrdila = vpdEvakuacijaGL.StZapisnika
        Dim Direktor = vpdPodjetje.Direktor
        Dim NaslovPodj = vpdPodjetje.Naslov
        Dim KrajPodj = vpdPodjetje.Kraj
        Dim Izvajalec = vpdIzvajalec.NazivFirme
        Dim OdlocbaMinistObramba = vpdIzvajalec.OdlocbaMinistObramba
        Dim PostnaSt_i = "",Kraj_i = "",PE_i = "",TelSt_i = ""

        If Not Isnothing(vpdIzvajalec.PostnaSt) Then
            PostnaSt_i = vpdIzvajalec.PostnaSt
        End If
        If Not Isnothing(vpdIzvajalec.Kraj) Then
            Kraj_i = vpdIzvajalec.Kraj
        End If
        If Not Isnothing(vpdIzvajalec.PE) Then
            PE_i = vpdIzvajalec.PE
        End If
        If Not Isnothing(vpdIzvajalec.TelSt) Then
            TelSt_i = vpdIzvajalec.TelSt
        End If

        Dim ImePriimek1 = "",ImePriimek2 = ""
        If Not Isnothing(vpdEvakuacijaGL.IDPodpisnik1) Then
            ImePriimek1 = db.vpdPodpisnik.Find(vpdEvakuacijaGL.IDPodpisnik1)?.ImePriimek
        End If
        If Not Isnothing(vpdEvakuacijaGL.IDPodpisnik2) Then
            ImePriimek2 = db.vpdPodpisnik.Find(vpdEvakuacijaGL.IDPodpisnik2)?.ImePriimek
        End If

        fields.Add("Datum",Datum)
        fields.Add("Stpotrdila",Stpotrdila)
        fields.Add("Izvajalec",Izvajalec)
        fields.Add("Direktor",Direktor)
        fields.Add("ImePriimek1",ImePriimek1)
        fields.Add("ImePriimek2",ImePriimek2)
        fields.Add("NaslovPodj",NaslovPodj)
        fields.Add("KrajPodj",KrajPodj)
        fields.Add("OdlocbaMinistObramba",OdlocbaMinistObramba)
        fields.Add("DatumUsp",vpdEvakuacijaGL.DatumUsp)
        fields.Add("DatumPotekaVeljavnosti",vpdEvakuacijaGL.DatumPotekaVeljavnosti)
        fields.Add("PostnaSt_i",PostnaSt_i)
        fields.Add("Kraj_i",Kraj_i)
        fields.Add("Kraj_i_1",Kraj_i)
        fields.Add("PE_i",PE_i)
        fields.Add("TelSt_i",TelSt_i)

        Dim tableData = New ESNETWordManipulation.TableFieldData()
        tableData.PropertyKeyMapping = New Dictionary(Of String,String)()
        tableData.PropertyKeyMapping.Add("ImePriimek","ImePriimek")
        tableData.PropertyKeyMapping.Add("DatumRojstva","DatumRojstvaView")
        tableData.PropertyKeyMapping.Add("NazivFirme","NazivFirme")
        tableData.PropertyKeyMapping.Add("NaslovPodjetja","NaslovPodjetja")
        tableData.PropertyKeyMapping.Add("PostnaSt_p","PostnaSt_p_String")
        tableData.PropertyKeyMapping.Add("Kraj_p","Kraj_p")
        tableData.PropertyKeyMapping.Add("NazivDM","NazivDM")
        tableData.PropertyKeyMapping.Add("Kraj","Kraj")
        tableData.PropertyKeyMapping.Add("ProgramUsp","ProgramUsp")
        tableData.PropertyKeyMapping.Add("Periodika","Periodika")
        tableData.Values = New List(Of Object)()

        Dim i As Integer = 0
        For Each item In result
            i = i + 1
            If Isnothing(item.PostnaSt_p) Then
                item.PostnaSt_p = ""
            End If
            tableData.Values.Add(item)
        Next

        Dim data As New ESNETWordManipulation.ESNETWordData
        data.TableFields = New List(Of ESNETWordManipulation.TableFieldData)()
        data.Table2DFields = New List(Of ESNETWordManipulation.Table2DFieldData)()
        data.Images = New List(Of String)()
        data.ImageBookmarks = New Dictionary(Of String,String)()

        data.TableFields.Add(tableData)
        data.Fields = fields
        data.FilePath = file
        wmO.CreateWord(data,outFile + docxExt)

        Dim tmp = New WordMistery.WordManage("")
        tmp.convert2(outFile + docxExt,outFile + pdfExt)
        Return HelperFunctions.g_tempFiles + filename + pdfExt

这是单词模板的布局:

enter image description here

解决方法

我发现了问题。它是在Word模板中,而不是在代码中。在模板中,图片的这一部分不是桌子。在我的代码中,我正在创建 tableData ,并且期望在Word模板内的表格中包含这些字段。如果有人要执行1名以上员工的报告,则需要Word模板中的表格。

enter image description here