问题描述
我有一个功能,可以从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