2022年8月26日金曜日

ExcelDataReaderでCSVを読み込む

どうも。ひっくです。

今回は表題の通り、ExcelDataReaderを使用してCSVデータを読み取る方法について

紹介しようと思います。

→ 関連記事 はこちら  ExcelDataReaderでExcelを高速に読み込む

ExcelDataReaderの使用用途、メリット・デメリット


前回記事 ExcelDataReaderでExcelを高速に読み込む でExcelを読み込む際の使用用途等を記載しています。

CSVの場合もExcelと似た使用用途、メリット・デメリットとなるかと思うので、そちらを参照してください。

 

動作環境と公式GitHubについて


 

実際に使用してみる


今回確認は以下で実施しています。

OS: Windows11

Target Framework: .NetCore3.1

VisualStudio: 2022 Community

 

導入手順は以下の通りです。

  1. NuGetから「ExcelDataReader」「ExcelDataReader.DataSet」をインストールします。

  2. ExcelDataReaderを参照し、読み込み用メソッドを用意しておきます。

    以下サンプルを使用してCSVファイルを読み込むと、DataTable型でCSVのデータを取得することができます。

    Excelの読み込みとあまり変わりないですが、CSVを読み込む際は「CreateCsvReader」を使用するのがポイントです。

    読み込み時のエンコーディング指定やセパレータ指定は「ExcelReaderConfiguration」のプロパティに

    CSV読み込み専用のプロパティが用意されているので、そちらを適宜利用してください。

using ExcelDataReader;
using System;
using System.Data;
using System.IO;
using System.Text;

namespace ExcelDataReaderTest
{
    public class ExcelCsvDataReader
    {
        public DataTable ReadCsvData(string path, bool isUseHeaderRow = false)
        {
            DataTable data = null;

            try
            {
                Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
                using var stream = File.Open(path, FileMode.Open, FileAccess.Read);
                var excelReaderConfig = new ExcelReaderConfiguration();

                // 必要に応じて、各プロパティに対し設定を行う(デフォルトの値で問題ない場合は特に変更しない)
                //excelReaderConfig.AutodetectSeparators = new char[','];
                //excelReaderConfig.FallbackEncoding = Encoding.UTF8;
                //excelReaderConfig.AnalyzeInitialCsvRows = 0;

                using var reader = ExcelReaderFactory.CreateCsvReader(stream, excelReaderConfig);
                var conf = new ExcelDataSetConfiguration
                {
                    ConfigureDataTable = (_) => new ExcelDataTableConfiguration
                    {
                        UseHeaderRow = isUseHeaderRow
                    }
                };

                DataSet ds = reader.AsDataSet(conf);
                data = ds.Tables[0];
            }
            catch (Exception)
            {
                throw;
            }

            return data;
        }
    }
}

 

  • 読み込みCSV(例)

    今回は厚生労働省のオープンデータ(新型コロナウイルス 新規陽性者数の推移(日別))を題材にしてみました。

    変数「ds」をビジュアライザーで開いたのが以下になります。

    呼び出し時に第二引数「isUseHeaderRow」を「true」を設定すると、1行目をヘッダとして読み取ります。

    この時、テーブルの列名には以下のように1行目の項目が設定されます。

     

    1行目をヘッダ扱いしない場合、以下のように1行目の項目もデータとして読み取られます。

まとめ


以上、ExcelDataReaderを使用してCSVを読み込む方法について、まとめました。

CSVの読み込み処理は比較的簡単に実装可能な部類と思いますが、より楽に読み込み処理を用意できるのではないでしょうか。

前回紹介したExcelと合わせて、利用してみてください。

 

今回はこのへんで。ではまた!

2022年8月23日火曜日

ノーコード AppSheet(アップシート)を触ってみた

どうも、もりもりです。

ちょっと仕事とは関係ないのですがGoogleさんが提供しているノーコード開発ツール「AppSheet(アップシート)」を触る機会があったのでスプレッドシート作成〜スマホにアプリをインストールまでの手順を残しておきます。

Googleスプレッドシートからアプリをサクっと作ることができて、さらにクオリティが思ってたよりも高くて驚いてます!

スプレッドシート作成

まずはスプレッドシートを作成。右上のGoogleアプリからスプレッドシートを選択し、空白のシートを作成。

今回は商品一覧のアプリを作ってみたいと思うので下記のような一覧を作成。画像は後から登録できるので今は空けておきます。

スプレッドシートから作成されたアプリ

先に完成したアプリ見せちゃいます。こんな一覧のアプリが作れちゃいます。そして追加や編集、削除ももちろんできますし、編集した内容は先ほど作成したスプレッドシートに反映されます。

いや、これ、すごくね!?。。。 AndroidとかiOSのネイティブアプリをKotlinとかSwift、.NET MAUIで作ろうと思ったらテストまで入れても1〜2週間は欲しいよw(え?かかりすぎ?まぁまぁ

それが5分とか10分でできちゃうとか。。。すごいです!

AppSheetでアプリを作成

ということで、作成手順に入りたいと思います。

最初に作成したスプレッドシートのメニュー 拡張機能 -> AppSheet -> アプリを作成と選んでいきます。

はい、これだけです。

ちょっと待つとAppSheetのHome画面が表示され、右側にアプリのイメージが表示されます。そして実際に動きも確認できます。

テーブルやカラムの編集

が、このままでは少し表示がおかしかったりするのでテーブルやカラムのタイプを変えていきましょう。

まぁテーブルは今回は更新、追加、削除すべてOKとするのでそのままにしておきますが許可するかはお好きなように変更できます。

デフォルトでは商品コードのタイプがPriceになっていたり、商品がキーとなっているのでその辺りを下記のように変更します。 画像もTextだったかな?になってるのでImageに変更しておきます。

これだけでそれっぽくなりました。

参考サイトは必須入力を外しておきます。カラム左の編集リンクをクリックして Data Validity -> Require? のチェックをOFFにします。

変更した内容は画面右上のSaveボタンで保存しておきましょう。

一覧の見た目を変更

左メニュー UX -> Views から gallery や card にタイプを変更してもいい感じででした。

商品の詳細や編集画面の確認

任意の行を選択します。

詳細画面が表示されます。

編集ボタンをクリックすると編集画面が表示されます。

あとは画像を登録して保存するだけ。今回は画像をアップロードしましたが、Web上にある画像のURLを指定しても問題なく表示されます。 その場合はわざわざ一つずつアップロードしなくてもあらかじめどこかにアップしておいてURLをスプレッドシートに最初から記入しておけばOKでラクですね。

スマホにインストール

さて、ここまで来たらあとは実機で確認したくなりますね。下記メールが届いていると思います。

このリンクからInstallするだけです。

インストールできました。

アプリからデータ編集

せっかくなのでアプリからもデータを編集してみましょう。

スプレッドシートを確認すると変更した内容が反映されています。

さいごに

いかがでしたか?プログラマーでなくてもアプリが作れちゃいますね。 ノーコード、思ってたよりもすごかった。。。 今回はGoogleスプレッドシートでしたがDB(SQL ServerやMySQL等)でもExcelでもできちゃうみたいです。 興味のある方はいろいろと触ってみてください。

以上、もりもりでした。

2022年8月8日月曜日

エクセルの図形にセルの内容を連動させる

こんにちは、やっまむーです。

最近知って目からウロコなTipsがありました。
図形内テキストにセルの内容を連動させるというものです。
今回はその内容をご紹介します。

図形にセルの内容を連動する方法

やり方は非常に簡単で、セル参照の数式を数式バーで入れるだけです。

図形を追加して、選択します。

そして図形内ではなく、上の数式バーに参照したいセルを入力。

すると、図形内にセルのテキストが反映されます。

これを応用すると、グラフのタイトルやワードアート等でもセル参照ができるようになります。
資料の文言修正で漏れてしまう失敗が減るので、皆さんも機会があれば試してみてください。

ではではー。