[ruby + excel] Précautions d'enregistrement sous

Dans ruby, vous pouvez utiliser Excel en utilisant win32ole. J'ai eu une erreur à SaveAs, alors prenez note des notes. C'était une erreur comme method_missing: (dans la méthode OLE'saveas ') (WIN32OLERuntimeError).

Conclusion

Lors de l'enregistrement dans le répertoire spécifié

require 'win32ole'

app = WIN32OLE.new('Excel.Application')
book = app.workbooks.add
out_path = File.expand_path('test.xlsx').gsub('/', '\\')
book.saveas filename: out_path
book.close savechanges: false
app.quit

À propos du chemin spécifié par SaveAs

  1. Les chemins relatifs sont basés sur les habitants d'Excel.
  2. Définissez le délimiteur de chemin sur \ au lieu de /.
  3. Les arguments nommés sont spécifiés par des symboles.

1. Actuel qu'Excel a

Les chemins relatifs sont disponibles en rubis. Les chemins relatifs peuvent être utilisés dans Excel, mais l'emplacement indiqué par «courant» est le dossier local défini dans Excel. Il s'agit de l'emplacement décrit dans l'option "Emplacement de stockage des fichiers locaux par défaut" facultatif. Donc, je vais en faire un chemin absolu pour rendre l'emplacement où ruby est en cours d'exécution.

out_path = File.expand_path('test.xlsx')

2. Le délimiteur de chemin est \ au lieu de /.

Dans le chemin ruby, / (barre oblique) est utilisé pour séparer la hiérarchie. Apparemment, il n'a pas pu être enregistré tel quel, alors remplacez le délimiteur par \ (barre oblique inverse).

out_path = File.expand_path('test.xlsx').gsub('/', '\\')

3. Spécification des arguments nommés

Les arguments nommés peuvent être spécifiés par des symboles. VBA utilise ": =", mais écrivez-le comme suit.

workbook.saveas filename: path

Il n'a pas été vérifié pourquoi cela peut être fait. Parce que vous passez l'argument comme un hachage?

De côté

Cela semble être la base du rubis,

p out_path

Dans, la chaîne est placée entre "" et \ est échappé comme \\. (Je veux en faire un, pas \\ !, Et faire diverses choses pendant plusieurs heures ...) C'est juste une question d'afficher l'invite, et il n'y a en fait qu'un seul .

puts out_path

J'aurais dû le faire.

Puisqu'il s'agit d'un débutant en rubis, il peut y avoir une description incorrecte. Je vous serais reconnaissant si vous pouviez le souligner dans les commentaires.

Recommended Posts

[ruby + excel] Précautions d'enregistrement sous
abréviation de la méthode ruby
[Ruby] À quoi sert «!!»?
Précautions pour la mise à jour de l'objet Realm