SlideShare a Scribd company logo
Excelが嫌でRubyを始めたけど
Excelから離れられない話
Osaka RubyKaigi 01
つじたさとみ@satomicchy
8年前の出来事
➤ 「経理屋がRailsを始めた理由」より
そしていま、2018年
➤ Railsアプリから官庁への提出資料を出力
Excelふたたび!
そしていま、2018年
そしていま、2018年
大人になったのでちゃんと向き合いました
Excelと向き合う
➤ やりたいこと
- xlsxテンプレの準備�:�官庁提供ファイル
- Railsアプリでxlsxへのデータ差し込み
- Railsアプリからxlsxダウンロード
Excelと向き合う
➤ xlsxへのデータ差し込み
gem spreadsheetx (by craigulliott)
https://github.com/craigulliott/spreadsheetx
7年前から更新なし (T T)
fork してみる
そもそもxlsxてどうなってるの?
Excelと向き合う
➤ Excel = xlsx = xmlファイルをzipしたもの
Excelと向き合う
➤ xlsxと向き合あった手順
- ファイル名と同じフォルダを作って、その中でxlsxをunzip
- gem nokogiriでタグの改行&インデント整形
(参考��https://goo.gl/a6FzcG)
- git管理にする
- あとは、git grepしたり、ちょっと変更した他のxmlを全上書き
してgit diff見たり、ぐぐったり
・standaloneじゃないxmlは、nokogiriで整形できなかった
・LibreOfficeで保存したxlsxは、一部のxmlのstandaloneが変わる
Excelと向き合う
➤ xlsxをunzipした例
ざっくり構成
xlsxを構成する
全体の情報
個々のスタイル情報
(部分的にシート毎)
個々の文字情報
(ほぼシート毎)
+
+
*.xlsx/
├ [Content_Types].xml
├ _rels/
├ docProps/
├ app.xml
└ core.xml
└ xl/
├ _rels/
├ worksheets/
└ sheet1.xml
├ sharedStrings.xml
├ styles.xml
└ workbook.xml
Excelと向き合う
➤ セルに差し込み → セルのデータと種類を変更
xl/worksheets/sheet1.xml 抜粋
<row r="8" s="1" customFormat="true" ht="25.5" hidden=“false"
customHeight="true" outlineLevel="0" collapsed="false">
<c r="A8" s="27" t="n">
<v>1</v>
</c>
</row>
列情報
データ種類セル番号
セルのデータ
Excelと向き合う
➤ テキストボックスに差し込み・・・実装中
xl/drawings/drawing1.xml 抜粋
<xdr:twoCellAnchor editAs="oneCell">
<xdr:from>
・・・
</xdr:from>
<xdr:to>
・・・
</xdr:to>
<xdr:sp macro="" textlink="">
<xdr:nvSpPr>
<xdr:cNvPr id="5" name="テキスト ボックス 1"/>
<xdr:cNvSpPr txBox="1">
<a:spLocks noChangeArrowheads="1"/>
</xdr:cNvSpPr>
</xdr:nvSpPr>
<xdr:spPr bwMode="auto">
・・・
</xdr:spPr>
<xdr:txBody>
<a:bodyPr vertOverflow="clip" wrap="square" lIns="27432" tIns="18288" rIns="0" bIns="0" anchor="t" upright="1"/>
<a:lstStyle/>
<a:p>
<a:r>
・・・
<a:t>◯</a:t>
</a:r>
</a:p>
</xdr:txBody>
</xdr:sp>
<xdr:clientData/>
</xdr:twoCellAnchor>
テキストボックスの名前
テキストボックスのデータ(種類問わず)
例えばこういう◯がほしい
Excelと向き合う
➤ gem spreadsheetx (by satomicchy) :�部分的に使用可能
https://github.com/satomicchy/spreadsheetx
- 特定のセルへの差し込み
- 文字色、セルサイズ、セル塗りつぶしなどは変更しない(はず)
➤ その他
- 特定のテキストボックスへの差し込み・・・実装中
(どうgemに組み込むか考え中)
- シート保護のパスワードが変更できるようになる
“Excel
- @satomicchy

More Related Content

More from Satomi Tsujita

Gemの話 紹介編
Gemの話 紹介編Gemの話 紹介編
Gemの話 紹介編
Satomi Tsujita
 
RubyとRailsのおいしい使い方 ver. okayama1
RubyとRailsのおいしい使い方 ver. okayama1RubyとRailsのおいしい使い方 ver. okayama1
RubyとRailsのおいしい使い方 ver. okayama1
Satomi Tsujita
 
RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方
Satomi Tsujita
 
Minami.rbの履歴書
Minami.rbの履歴書Minami.rbの履歴書
Minami.rbの履歴書
Satomi Tsujita
 
Wt2015
Wt2015Wt2015
Rubyビジネスセミナー大阪2015
Rubyビジネスセミナー大阪2015Rubyビジネスセミナー大阪2015
Rubyビジネスセミナー大阪2015
Satomi Tsujita
 
JAWS-UG2014
JAWS-UG2014JAWS-UG2014
JAWS-UG2014
Satomi Tsujita
 
Rails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3editionRails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3editionSatomi Tsujita
 
Rails初心者レッスン lesson2 3edition
Rails初心者レッスン lesson2 3editionRails初心者レッスン lesson2 3edition
Rails初心者レッスン lesson2 3edition
Satomi Tsujita
 
Rails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2editionRails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2edition
Satomi Tsujita
 
Rails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2editionRails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2edition
Satomi Tsujita
 
Rails初心者レッスン lesson2 2edition
Rails初心者レッスン lesson2 2editionRails初心者レッスン lesson2 2edition
Rails初心者レッスン lesson2 2editionSatomi Tsujita
 
Prawn087とrails235
Prawn087とrails235Prawn087とrails235
Prawn087とrails235
Satomi Tsujita
 
Rails初心者レッスン lesson1 2edition
Rails初心者レッスン lesson1 2editionRails初心者レッスン lesson1 2edition
Rails初心者レッスン lesson1 2editionSatomi Tsujita
 
Rails初心者レッスン lesson1 2edition
Rails初心者レッスン lesson1 2editionRails初心者レッスン lesson1 2edition
Rails初心者レッスン lesson1 2editionSatomi Tsujita
 
Rails初心者レッスン lesson4
Rails初心者レッスン lesson4Rails初心者レッスン lesson4
Rails初心者レッスン lesson4Satomi Tsujita
 
Rails初心者レッスン lesson3
Rails初心者レッスン lesson3Rails初心者レッスン lesson3
Rails初心者レッスン lesson3
Satomi Tsujita
 
Rails初心者レッスン lesson1
Rails初心者レッスン lesson1Rails初心者レッスン lesson1
Rails初心者レッスン lesson1
Satomi Tsujita
 

More from Satomi Tsujita (20)

Gemの話 紹介編
Gemの話 紹介編Gemの話 紹介編
Gemの話 紹介編
 
RubyとRailsのおいしい使い方 ver. okayama1
RubyとRailsのおいしい使い方 ver. okayama1RubyとRailsのおいしい使い方 ver. okayama1
RubyとRailsのおいしい使い方 ver. okayama1
 
RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方RubyとRailsのおいしい使い方
RubyとRailsのおいしい使い方
 
Minami.rbの履歴書
Minami.rbの履歴書Minami.rbの履歴書
Minami.rbの履歴書
 
Wt2015
Wt2015Wt2015
Wt2015
 
Rubyビジネスセミナー大阪2015
Rubyビジネスセミナー大阪2015Rubyビジネスセミナー大阪2015
Rubyビジネスセミナー大阪2015
 
JAWS-UG2014
JAWS-UG2014JAWS-UG2014
JAWS-UG2014
 
Rails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3editionRails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3edition
 
Uragamiso re
Uragamiso reUragamiso re
Uragamiso re
 
Rails初心者レッスン lesson2 3edition
Rails初心者レッスン lesson2 3editionRails初心者レッスン lesson2 3edition
Rails初心者レッスン lesson2 3edition
 
Sql基礎の基礎
Sql基礎の基礎Sql基礎の基礎
Sql基礎の基礎
 
Rails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2editionRails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2edition
 
Rails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2editionRails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2edition
 
Rails初心者レッスン lesson2 2edition
Rails初心者レッスン lesson2 2editionRails初心者レッスン lesson2 2edition
Rails初心者レッスン lesson2 2edition
 
Prawn087とrails235
Prawn087とrails235Prawn087とrails235
Prawn087とrails235
 
Rails初心者レッスン lesson1 2edition
Rails初心者レッスン lesson1 2editionRails初心者レッスン lesson1 2edition
Rails初心者レッスン lesson1 2edition
 
Rails初心者レッスン lesson1 2edition
Rails初心者レッスン lesson1 2editionRails初心者レッスン lesson1 2edition
Rails初心者レッスン lesson1 2edition
 
Rails初心者レッスン lesson4
Rails初心者レッスン lesson4Rails初心者レッスン lesson4
Rails初心者レッスン lesson4
 
Rails初心者レッスン lesson3
Rails初心者レッスン lesson3Rails初心者レッスン lesson3
Rails初心者レッスン lesson3
 
Rails初心者レッスン lesson1
Rails初心者レッスン lesson1Rails初心者レッスン lesson1
Rails初心者レッスン lesson1
 

Recently uploaded

FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 

Recently uploaded (15)

FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 

Osaka rubykaigi01