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