» »

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:

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.

8-O

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š:

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:

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
Dim oldCI As System.Globalization.CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US")


ne dela [:)]

majlo ::

Sem probal tudi sam :/

Zakaj pa rabiš ravno v tiff?

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:
 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

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

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

saule ::

Mogoče še malo pomoči...

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 ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Težava pri vnosu decimalnega števila v bazo (C#, Access)

Oddelek: Programiranje
12888 (605) nemonemo
»

[WPF] Vrednost Textbox kot "angle" v AxisAngleRotation3D

Oddelek: Programiranje
5724 (659) saule
»

Visual Studio - koda za prikaz OS?

Oddelek: Programiranje
91011 (778) detroit
»

c# regularni izraz

Oddelek: Programiranje
201941 (1639) darkolord
»

[C#] Prosim pomagajte! Potrebujem program, ki bi pobiral podatke iz ene strani

Oddelek: Programiranje
212581 (2191) David1994

Več podobnih tem