Forum » Programiranje » VB.net Excel v Tif
VB.net Excel v Tif

saule ::
Zdravo,
Pobijam se z tiskanjem Excela preko MS Document Writer v Tif... Word mi "sprinta" brez problema:
Excel-a pa nikakor:
Napaka, ki jo vrne: Exception from HRESULT: 0x800A03EC
Občutek imam, da zgolj ne znam poslati parametra za tisk v datoteko, saj v kolikor ne vnesem ničesar (oApp.ActiveSheet.PrintOut()) mi natisne Tif brez težav. V tem postopku je seveda težava, da moram ročno izbrati mesto kam naj Tif shrani..
Prebral sem si http://msdn.microsoft.com/en-us/library..., ampak mi vseeno ne uspe.
Pobijam se z tiskanjem Excela preko MS Document Writer v Tif... Word mi "sprinta" brez problema:
Dim AppWord As Word.Application = New Word.Application
Dim objCurrentDoc As Word.Document = New Word.Document
objCurrentDoc = AppWord.Documents.Add("C:\Pic2.doc")
AppWord.ActivePrinter = "Microsoft Writer"
bjCurrentDoc.PrintOut(PrintToFile:=True, OutputFileName:="c:\test2.tif")
ojCurrentDoc.Close()
AppWord.Quit()
Excel-a pa nikakor:
Dim oApp As New Excel.Application()
oApp.ActiveSheet.PrintOut(PrintToFile:="C:\temp.tif", OutputFileName:=True)
Napaka, ki jo vrne: Exception from HRESULT: 0x800A03EC
Občutek imam, da zgolj ne znam poslati parametra za tisk v datoteko, saj v kolikor ne vnesem ničesar (oApp.ActiveSheet.PrintOut()) mi natisne Tif brez težav. V tem postopku je seveda težava, da moram ročno izbrati mesto kam naj Tif shrani..
Prebral sem si http://msdn.microsoft.com/en-us/library..., ampak mi vseeno ne uspe.


majlo ::
Dim oApp As New Excel.Application()
oApp.ActiveSheet.PrintOut(PrintToFile:="C:\temp.tif", OutputFileName:=True)
Je možno, da si zamenjal :
Zgoraj za vord imaš imaš:
bjCurrentDoc.PrintOut(PrintToFile:=True, OutputFileName:="c:\test2.tif")
spodaj za excel pa:
oApp.ActiveSheet.PrintOut(PrintToFile:="C:\temp.tif", OutputFileName:=True)
Probaj dat tako kot zgoraj:
oApp.ActiveSheet.PrintOut(PrintToFile:=True, OutputFileName:="C:\temp.tif")

saule ::
Sem poskušal obračati, pa ni nobenih sprememb... Iz zgornjega linka sem poskusil tudi vnesti vse parametre, ki so na voljo (v podanem vrstnem redu) pa je še vedno isto.

majlo ::
Probaj z spreminjanjem culture infa. Vem da me je to enkrat hebalo pri excelu
Na začetku suba, kjer shranjuješ:
na koncu pa nazaj
Na začetku suba, kjer shranjuješ:
Dim oldCI As System.Globalization.CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US")
na koncu pa nazaj
System.Threading.Thread.CurrentThread.CurrentCulture = oldCI
Zgodovina sprememb…
- spremenilo: majlo ()

saule ::
Sem poskusil, pa ni pomagalo. Sem se potem še igral z regional settings, pa še vedno nič. Po naključju sem našel rešitev:
Kaj točno pomenijo ti parametri mi še ni čisto jasno, ampak se mi zdi da mi bo prejšnji link razložil...
Hvala vseeno!
oApp.ActiveSheet.PrintOut(1, 2, 1, False, PrintToFile:=True, Collate:=False, PrToFileName:="c:\MyData.tif")
Kaj točno pomenijo ti parametri mi še ni čisto jasno, ampak se mi zdi da mi bo prejšnji link razložil...
Hvala vseeno!

saule ::
Brez
ne dela [:)]
Dim oldCI As System.Globalization.CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US")
ne dela [:)]

saule ::
Iščem v vseh datotekah na strežniku nek logotip, pa sem prišel do zaključka da bo vrjetno najlažje z OCR...

prtenjam ::
Pozdravljen,
Tako kot je koda zapisana ne more delati, saj želiš izpisati dokument, ki ga ni. Ali si del kode spustil ali pa sploh nisi odprl dokumenta:
Tako kot je koda zapisana ne more delati, saj želiš izpisati dokument, ki ga ni. Ali si del kode spustil ali pa sploh nisi odprl dokumenta:
Dim oApp As Microsoft.Office.Interop.Excel.Application = New Microsoft.Office.Interop.Excel.Application
Dim document As Microsoft.Office.Interop.Excel.Workbook
document = oApp.Workbooks.Open("c:\neka.txt")
.... in potem ....
oApp.ActiveSheet.PrintOut
Matjaž Prtenjak
https://mnet.si
https://mnet.si
Zgodovina sprememb…
- spremenil: prtenjam ()

saule ::
Nisem napisal celotne kode, ker je dejansko bil problem samo v parametru za PrintOut(). Celotna je sedaj moja taka:
'Set regional settings to English
Dim oldCI As System.Globalization.CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US")
'EXCEL
Dim oApp As New Excel.Application()
oApp.Visible = False
oApp.UserControl = False
Dim oBooks As Object = oApp.Workbooks
Dim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US")
oBooks.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, oBooks, Nothing, ci)
Try
oBooks = oApp.Workbooks.Open(FilePath)
oApp.ActiveSheet.PrintOut(1, 2, 1, False, PrintToFile:=True, Collate:=False, PrToFileName:="c:\MyData.tif")
Catch ex As Exception
MsgBox(ex.Message)
Finally
'Quit
oBooks.Close(False)
NAR(oBooks)
oApp.Workbooks.Close()
NAR(oApp.Workbooks)
oApp.Quit()
NAR(oApp)
GC.Collect()
End Try
'Reset regional settings
System.Threading.Thread.CurrentThread.CurrentCulture = oldCI
Sub NAR(ByVal o As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(o)
Catch ex As Exception
Finally
o = Nothing
End Try
End Sub

prtenjam ::
In je sedaj ok? Problem je bil v lokalnih nastavitvah? bug?
Matjaž Prtenjak
https://mnet.si
https://mnet.si

saule ::
Sedaj je OK. Problema sta dejansko 2 (pomota v prejšnjem postu):
- Za PrintOut v datoteko je potrebno v Excelu zapisat (vsaj) takole: oApp.ActiveSheet.PrintOut(1, 2, 1, False, PrintToFile:=True, Collate:=False, PrToFileName:="c:\MyData.tif")
- Kot je rekel Majlo je potreno nastavit culture info na en_US
- Za PrintOut v datoteko je potrebno v Excelu zapisat (vsaj) takole: oApp.ActiveSheet.PrintOut(1, 2, 1, False, PrintToFile:=True, Collate:=False, PrToFileName:="c:\MyData.tif")
- Kot je rekel Majlo je potreno nastavit culture info na en_US

saule ::
Mogoče še malo pomoči...
Sedaj odprem Tif, naredim OCR potem pa nikakor ne znam zapret te datoteke.
Odprem:
Zaprem (vsaj tako sem mislil):
Zadeva ne deluje, ker je dokument dejansko še vedno odprt - do njega ne morem dostopati. Napaka je: document in use by another process.
Sedaj odprem Tif, naredim OCR potem pa nikakor ne znam zapret te datoteke.
Odprem:
Dim miWord() As MODI.Word
Dim i, j As Long
Dim str As String
Dim Cont As Long
Dim IMG As Long
Dim miDoc As MODI.Document
miDoc = New MODI.Document
miDoc.Create("c:\MyData.tif")
Zaprem (vsaj tako sem mislil):
miDoc.Close()
GC.Collect()
GC.WaitForPendingFinalizers()
Zadeva ne deluje, ker je dokument dejansko še vedno odprt - do njega ne morem dostopati. Napaka je: document in use by another process.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Težava pri vnosu decimalnega števila v bazo (C#, Access)Oddelek: Programiranje | 1032 (749) | nemonemo |
» | [WPF] Vrednost Textbox kot "angle" v AxisAngleRotation3DOddelek: Programiranje | 828 (763) | saule |
» | Visual Studio - koda za prikaz OS?Oddelek: Programiranje | 1142 (909) | detroit |
» | c# regularni izrazOddelek: Programiranje | 2073 (1771) | darkolord |
» | [C#] Prosim pomagajte! Potrebujem program, ki bi pobiral podatke iz ene straniOddelek: Programiranje | 2800 (2410) | David1994 |