Forum: Italian Ruby user group win32ole - Come specificare il formato con SaveAs

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Eff93e9bbe063b7136c9b6f218071a09?d=identicon&s=25 Marco Mastrodonato (marcomd)
on 2009-04-21 12:02
Con office 2007 c'è la possibilità di salvare un documento in pdf ma non
capisco come scegliere il formato di salvataggio, prima di perderci del
tempo provo a chiedere magari qualcuno ci è già passato, questo è il
codice di esempio:

require 'win32ole'
word = WIN32OLE.new('Word.Application')
document = word.Documents.Open('C:\prova.doc')
document.SaveAs('C:\out.doc', 0)
document.close
word.quit

ho provato cambiando l'estensione ma da questa non rileva il tipo
document.SaveAs('C:\out.pdf', 0)
Eff93e9bbe063b7136c9b6f218071a09?d=identicon&s=25 Marco Mastrodonato (marcomd)
on 2009-04-21 12:10
Qua' c'è scritto di impostare il numero dopo il nome ma come trovare a
cosa corrisponde il pdf?

http://rubyonwindows.blogspot.com/search/label/word
7bac9e5a826baf1d4f8a4a63bf026301?d=identicon&s=25 Michele Casari (miclab)
on 2009-04-21 12:35
Marco Mastrodonato wrote:
> Con office 2007 c'è la possibilità di salvare un documento in pdf ma non
> capisco come scegliere il formato di salvataggio, prima di perderci del
> tempo provo a chiedere magari qualcuno ci è già passato, questo è il
> codice di esempio:
>
> require 'win32ole'
> word = WIN32OLE.new('Word.Application')
> document = word.Documents.Open('C:\prova.doc')
> document.SaveAs('C:\out.doc', 0)
> document.close
> word.quit
>
> ho provato cambiando l'estensione ma da questa non rileva il tipo
> document.SaveAs('C:\out.pdf', 0)

Io ho lavorato con xls.
Ho creato una classe per semplificarmi la vita (per la gestione dei
fogli e delle celle). Tornando al tuo problea. Spezzoni della classe
[...]
  def initialize(nomefile, fogli)
    #inizializza le variabili e prepara i fogli di lavoro
    @nome_file = nomefile
    @excel = WIN32OLE.new("excel.application")
    @excel.visible = false
    @excel.DisplayAlerts = false
    @workbook = @excel.workbooks.add
[...]

  def salva_file
    @workbook.saveas @nome_file
  end
[...]

Le differenze (rispetto al tuo codice) sono 3
1. non uso il metodo saveas sull'oggetto excel ma su workbook
2. il metodo saveas è minuscolo
3. senza parentesi e senza il parametro zero

P.S. ricordati di liberare la memoria chiudendo word.


Ciao Michele.
Eff93e9bbe063b7136c9b6f218071a09?d=identicon&s=25 Marco Mastrodonato (marcomd)
on 2009-04-21 15:05
Grazie per la risposta Michele, a quanto pare non è un problema comune.

Comunque ho trovato il sistema ed estendo quanto si può trovare nel blog
che ho citato prima.


Dal blog:
document.SaveAs('c:\temp\MyDocument.doc', 0)    # Word document
(default)
document.SaveAs('c:\temp\MyDocument.dot', 1)    # Word template
document.SaveAs('c:\temp\MyDocument.txt', 2)    # Text
document.SaveAs('c:\temp\MyDocument.rtf', 6)    # Rich Text Format (RTF)

Da office 2003 in poi:
document.SaveAs('c:\temp\MyDocument.xml', 11)    # Xml format

Da office 2007 + plugin pdf in poi:
document.SaveAs('c:\temp\MyDocument.pdf', 17)    # Pdf format

Ciao
This topic is locked and can not be replied to.