質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

1058閲覧

rubyでパスワード付きのエクセルを解除する方法

kakeiteiya

総合スコア252

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

3クリップ

投稿2020/10/08 00:40

やりたいこと

エクセルをアップロードする画面をつくり、エクセルの内容を取り出すプログラムをrubyXLでつくっています。
パスワード付きのエクセルの場合はどのようにして開けるのでしょうか
※パスワードは固定でわかっています

最悪、rubyでなくともlinuxやbashで対応できればいいのですが、なにか方法あるでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

https://qiita.com/ya-mada/items/c162383eda33dc516c39
こちらの記事の内容は如何でしょうか。

投稿2020/10/10 03:37

yasutakatou

総合スコア446

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kakeiteiya

2020/10/13 03:01

ありがとうございます。 パス付Excelの解除も記事のような感じでできるのかと思ったのですが駄目でした・。。
yasutakatou

2020/10/13 04:14

誤った回答でお手数おかけして申し訳ないです。 「パスワード付きZIPの扱い」の「解凍」を実施した時に発生したエラーを張り付けてもらえますでしょうか。
kakeiteiya

2020/10/13 05:57

ありがとうございます・・・! 以下のソースコードでみたときに、inputの中身がnilでした Zip::InputStream.open(path, 0, decrypter ) do |input| # get_next_entryするとinputのoffset(ポインタ)が動く while (entry = input.get_next_entry) # 書き出し先を作る save_path = File.join(outpath, entry.name) File.open(save_path) do |wf| # get_next_entryでポインタが動いているので、毎回input.readでOK wf.puts(input.read) end entrys << save_path end end
kakeiteiya

2020/10/13 05:57

▼input変数の中身 #<Zip::InputStream:0x0000556820b6d6a8 @archive_io=#<File:/usr/src/app/tmp/XXXXXXXXXXXXXXX.xlsx>, @current_entry=nil, @decompressor=Zip::NullDecompressor, @decrypter= #<Zip::TraditionalDecrypter:0x00007f50c4253408 @key0=-4181320447, @key1=996089025, @key2=-705186184, @password="XXXXXXXXXn">, @lineno=0, @output_b
kakeiteiya

2020/10/13 05:57

Zip::Error (XLSX file format error: Zip end of central directory signature not found):
kakeiteiya

2020/10/13 06:03

エクセルを読み込もうとしているからエラーなのかな・・・と思ってます・・・
yasutakatou

2020/10/13 07:55

すいません、思いっきり勘違いしてて大変大変申し訳ないです!Excel自体へのパスワードですね。 こちらに紹介されておりますGemがあります。 https://qiita.com/Kta-M/items/02a2c41c5624f75498aa#roo https://github.com/roo-rb/roo Excel 2007 - 2013 formats (xlsx, xlsm) -- # Load an encrypted OpenOffice Spreadsheet ods = Roo::OpenOffice.new("myspreadsheet.ods", password: "password") -- こちらのgemでパスワードを解除できると思いますがやりたいことのイメージはあっておりますでしょうか?お手数おかけしてすみませんでした!
kakeiteiya

2020/10/13 09:34

ありがとうございます・・・!!!???????????????????????? これで試してみます????????????????????????
yasutakatou

2020/10/13 13:31

あまりヒントになってないかな、と僕は思ってしまったのですが大丈夫ですか? また分からない点がありましたら調査等しますのでなんなりと追記お願いします!
kakeiteiya

2020/10/14 01:39

すみません・・・????ありがとうございます・・・!! パスワード保護を解除できるのはodsファイルだけでした。xlsxは非対応のようです。 data = Roo::OpenOffice.new(path, password: "XXXXXXX") use Roo::OpenOffice.new to handle .ods spreadsheet files. This has .xlsx data = Roo::Excelx.new(path, password: "XXXXXXX") Zip::Error: Zip end of central directory signature not found data = Roo::Spreadsheet.open(path, password: "XXXXXXX") Zip::Error: Zip end of central directory signature not found
yasutakatou

2020/10/14 03:06

大変申し訳ございません!READMEにサポートしているフォーマットが書かれているので 対応しているものとてっきり思い込んでしまいました。お手数おかけしました・・ https://qiita.com/Kta-M/items/02a2c41c5624f75498aa こちらのまとめのどれかが対応していると良いのですが・・僕も今一度探して見ます!!
yasutakatou

2020/10/14 11:36

pythonとかperlでは出てくるのですが今のところrubyでは該当しそうなgemが見つけられていません。。 https://stackoverrun.com/ja/q/2050382 https://qiita.com/suk1yak1/items/526388f47a781ef10eb4 良い実装にならなくてすいませんが、別の言語に渡してテンポラリとして保存して、 再度rubyに読ませるといった流れで迂回する手は如何でしょうか。 あとLinuxコマンドでパスワードをアンロックするツールも探しましたがハッキングツールが多く、 ちと使って良いものやら判断できませんでした。プログラムで展開した方が安全ぽく見えます!
kakeiteiya

2020/10/15 01:59

いえ・・・!いろいろとありがとうございます???????????? 自分も探しているのですがやはり見つからず・・・ >別の言語に渡してテンポラリとして保存 この方法で試してみようと思います! ありがとうございます・・・!
yasutakatou

2020/10/15 02:58

根本の解決が出来ずに大変申し訳ないです。しかも最初思いっきり勘違いもしてましたし・・ ご迷惑おかけしました。引き続きで何かお手伝いできることありましたが是非ご連絡くださいませー
kakeiteiya

2020/10/15 05:03

ご親切にありがとうございます・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問