<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ryo</title>
    <description>The latest articles on DEV Community by Ryo (@ikeryo1182).</description>
    <link>https://dev.to/ikeryo1182</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F49811%2F3c83baf5-2ac0-406a-a65d-2d447863bbe0.png</url>
      <title>DEV Community: Ryo</title>
      <link>https://dev.to/ikeryo1182</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ikeryo1182"/>
    <language>en</language>
    <item>
      <title>Constructing Puppeteer Environment With Vagrant And Docker</title>
      <dc:creator>Ryo</dc:creator>
      <pubDate>Sun, 25 Mar 2018 12:43:18 +0000</pubDate>
      <link>https://dev.to/ikeryo1182/constracting-puppeteer-environment-with-vagrant-and-docker-5ano</link>
      <guid>https://dev.to/ikeryo1182/constracting-puppeteer-environment-with-vagrant-and-docker-5ano</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;I constructed the environment in which Puppeteer can be executed with vagrant and docker because I did not want to install any program into my local develpment environment.&lt;/p&gt;

&lt;p&gt;If you install Vagrant and VirtualBox, this environment will be constracted easily.&lt;/p&gt;

&lt;h1&gt;
  
  
  What Is Puppeteer
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/GoogleChrome/puppeteer" rel="noopener noreferrer"&gt;Puppeteer&lt;/a&gt; is the library that is provided by Google and useful to headlessly testing browser.&lt;/p&gt;

&lt;p&gt;Puppeteer can do ...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Screenshot&lt;/li&gt;
&lt;li&gt;Create PDF&lt;/li&gt;
&lt;li&gt;Scraping&lt;/li&gt;
&lt;li&gt;Automating Type Form Test&lt;/li&gt;
&lt;li&gt;Testing Javascript and the function of browser with Chrome&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There was the problem about Web application with javascript like React, but Puppeteer resolve it by using latest Chrome Browser. If you do not have to do cross browser test, you should use not selenium but puppeteer.&lt;/p&gt;

&lt;h1&gt;
  
  
  Prepareing
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Installing &lt;a href="http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html" rel="noopener noreferrer"&gt;VartualBox&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Installing &lt;a href="https://www.vagrantup.com/" rel="noopener noreferrer"&gt;Vagrant&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Checking my preparing repository (&lt;a href="https://github.com/ikeryo1182/puppeteer_tutorial" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Procedure
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1.Git Clone
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;user:~$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;AnyFolder
&lt;span class="gp"&gt;user:AnyFolder$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;git clone git@github.com:ikeryo1182/puppeteer_tutorial.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2.Vagrant up + ssh
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;user:AnyFolder$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;puppeteer_tutorial/vagrant_puppeteer
&lt;span class="gp"&gt;user:vagrant_puppeteer$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;vagrant up
&lt;span class="gp"&gt;user:vagrant_puppeteer$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;vagrant ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In 'vagrant up', docker will be installed by provisioning.&lt;/p&gt;

&lt;h2&gt;
  
  
  3.Change Directory + Root
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;[vagrant:localhost ~]$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;puppeteer
&lt;span class="gp"&gt;[vagrant:localhost puppeteer]$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;su
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4.Setting --selinux-enabled
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
- OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
+ OPTIONS='--selinux-enabled=false --log-driver=journald --signature-verification=false'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5.Docker Enable and Start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[root:localhost puppeteer]$ systemctl enable docker.service
[root:localhost puppeteer]$ systemctl start docker.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6.Check Docker Status
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;[root:localhost puppeteer]$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;systemctl status &lt;span class="nt"&gt;-l&lt;/span&gt; docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is good if the message ( the folloing ) is displayed&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;--&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Active: active &lt;span class="o"&gt;(&lt;/span&gt;running&lt;span class="o"&gt;)&lt;/span&gt; since xxx xxxx-xx-xx xx:xx:xx xxx&lt;span class="p"&gt;;&lt;/span&gt; xxmin ago
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  7.Docker Build
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;[root:localhost puppeteer]$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; puppeteer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to see more detail, you should check Dockerfile. &lt;/p&gt;

&lt;h2&gt;
  
  
  8.Docker Run
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;[root:localhost puppeteer]$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;:/opt/data-volume &lt;span class="nt"&gt;-w&lt;/span&gt; /opt/data-volume puppeteer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  9.Vagrant rsync back
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;user:vagrant_puppeteer$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;vagrant rsync-back
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can see the image results which is created by screenshot in script.js&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F192145%2F7901f54b-dc67-1376-eea7-844d76203036.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F192145%2F7901f54b-dc67-1376-eea7-844d76203036.png" alt="google_top.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is japanese page.&lt;br&gt;
If you do not need japanese font, you should modify Dockerfile in which Japanese Font is installed. It is executed in Docker build.&lt;/p&gt;

&lt;h2&gt;
  
  
  10.Modify script.js
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const puppeteer = require('puppeteer');

(async () =&amp;gt; {
  const browser = await puppeteer.launch({
    args: [
      '--no-sandbox',
      '--disable-setuid-sandbox'
    ]
  });
  const page = await browser.newPage();
  await page.goto('https://google.com');
  await page.screenshot({ path: 'google_top.png' });

  browser.close();
})();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Modify script.js and Scraping as you like !
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;user:vagrant_puppeteer$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;vagrant rsync
&lt;span class="gp"&gt;[root:localhost puppeteer]$&lt;/span&gt;docker build ~~~
&lt;span class="gp"&gt;[root:localhost puppeteer]$&lt;/span&gt;docker run ~~~
&lt;span class="gp"&gt;user:vagrant_puppeteer$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;vagrant rsync-back
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Thanks
&lt;/h1&gt;

&lt;p&gt;Thank you for reading&lt;/p&gt;

&lt;p&gt;Reference: &lt;br&gt;
&lt;a href="https://qiita.com/QUANON/items/59c468adfff0278f20bb" rel="noopener noreferrer"&gt;Oparating Puppeteer On Docker Container&lt;/a&gt;&lt;br&gt;
&lt;a href="https://qiita.com/sand/items/b01d7d8f3d9c1642298b" rel="noopener noreferrer"&gt;Manipulate Headless Chrome With Puppeteer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can check the source in the folloing URL (JP)&lt;br&gt;
&lt;a href="https://github.com/ikeryo1182/puppeteer_tutorial" rel="noopener noreferrer"&gt;puppeteer_tutorial repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>docker</category>
      <category>testing</category>
    </item>
    <item>
      <title>Handling Excel File with Ruby on Rails</title>
      <dc:creator>Ryo</dc:creator>
      <pubDate>Mon, 18 Dec 2017 05:32:41 +0000</pubDate>
      <link>https://dev.to/ikeryo1182/handling-excel-file-with-ruby-on-rails-2i4</link>
      <guid>https://dev.to/ikeryo1182/handling-excel-file-with-ruby-on-rails-2i4</guid>
      <description>&lt;p&gt;Hello, everyone!&lt;/p&gt;

&lt;h2&gt;
  
  
  Circumstance Of Excel With Ruby on Rails
&lt;/h2&gt;

&lt;p&gt;When you guys handle Excel File, there are two operations.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read Excel File&lt;/li&gt;
&lt;li&gt;Write Excel FIle&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Today, there are several gems to handle Excel File in Ruby on Rails ,e.g roo, axlsx, rubyXL. But, it does not always mean all of them are useful.&lt;br&gt;
That is some of the above gems is not equipped with all operations.&lt;/p&gt;

&lt;p&gt;For example, 'axlsx' gem can't read Excel file and 'roo' gem can't write. Therefore, I was looking for the gems that have all operations and usefulness. And then I discoverd 'rubyXL' gem which is so useful and easier to use than other gems. In the following, I will introduce the standard method to use rubyXL.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Is Implemented With rubyXL
&lt;/h2&gt;

&lt;p&gt;On condintion that you have format file, I implement the following.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read Excel File&lt;/li&gt;
&lt;li&gt;Write Excel File&lt;/li&gt;
&lt;li&gt;Export Excel File&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Preparing To Implement
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Install rubyXL
&lt;/h3&gt;

&lt;p&gt;add the following code into Gemfile.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gem 'rubyXL'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and then you should do 'bundle install'&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bundle install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How To Implement With rubyXL
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Read Excel File
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;workbook&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;RubyXL&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Parser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'ExcelFilePath'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should replace 'ExcelFilePath' with the path in which you want read file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Acquire WorkSheet
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;worksheet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;workbook&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'WorkSheetName'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As the following, you can specify worksheet by index.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;worksheet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;workbook&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;０&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;worksheet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;workbook&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Acquire CellValue
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;cell_value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;worksheet&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;value&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should be careful with the location of 'x' and 'y'.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add Cell
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;worksheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_cell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similarly, You should be careful with the location of 'x' and 'y'.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;cell_value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;worksheet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_cell&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As the above, you can also acquire the value of added cell.&lt;/p&gt;

&lt;h3&gt;
  
  
  Write Excel File
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;workbook&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'ExcelFilePath'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you should replace 'ExcelFilePath' with the path in which you want put written file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Export Excel File
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;send_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="n"&gt;workbook&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="err"&gt;　&lt;/span&gt;
      &lt;span class="ss"&gt;:disposition&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'attachment'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="ss"&gt;:type&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'application/excel'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="ss"&gt;:filename&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"FileName.xlsx"&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want binary data, you can get the data in the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;workbook&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  For Copy &amp;amp; Paste
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;#Read Excel File&lt;/span&gt;
&lt;span class="n"&gt;workbook&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;RubyXL&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Parser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'ExcelFilePath'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;#Acquire WorkSheet&lt;/span&gt;
&lt;span class="n"&gt;worksheet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;workbook&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'SheetName'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;#Acquire Cell Value&lt;/span&gt;
&lt;span class="n"&gt;cell_value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;worksheet&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;value&lt;/span&gt;

&lt;span class="c1"&gt;#Write Excel File&lt;/span&gt;
&lt;span class="n"&gt;workbook&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'ExcelFilePath'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;#Export File&lt;/span&gt;
&lt;span class="n"&gt;send_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="n"&gt;workbook&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="err"&gt;　&lt;/span&gt;
      &lt;span class="ss"&gt;:disposition&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'attachment'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="ss"&gt;:type&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'application/excel'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="ss"&gt;:filename&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"FileName.xlsx"&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Thank You For Reading
&lt;/h2&gt;

&lt;p&gt;In this time, I show implemention of rubyXL on condintion that there is format file. If you want to change width of cell and color of text and anything, you should read Document of rubyXL.&lt;/p&gt;

&lt;p&gt;Thank you for much.&lt;br&gt;
Have a good ruby life!&lt;/p&gt;

</description>
      <category>rails</category>
      <category>excel</category>
      <category>rubyxl</category>
      <category>ruby</category>
    </item>
  </channel>
</rss>
