Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

ASP.NETでプルダウン選択をモデル抜きでやる

ASP.NETのviewにてインプットをする場合、あれこれヘルパーが提供されています。
このうち、プルダウン選択は既存モデルから引っ張り出すこともできますし、
あるいは

実際のところ

時間の選択画面を出したいが60分全部出すのは不毛なので0分、15分、30分、45分とかしたい場合

<td>
@Html.DropDownListFor(
m => m.MINIT, // プロパティ
new SelectListItem[] {
new SelectListItem() { Value="00", Text="00" },
new SelectListItem() { Value="15", Text="15" },
new SelectListItem() { Value="30", Text="30" },
new SelectListItem() { Value="45", Text="45" }
}, 
"------", // デフォではこれを表示。無効な値
new { @class = "hoge" } // そのほかの属性
) 
</td>                                  

Visual Studio 2017でSQL Server 2016で作ったDBを読み込む

Visual Studio 2017でSQL Server 2016で作ったDBを読み込む方法です。

実際のところ

ツールから「データベースへの接続」を選択
f:id:shuzo_kino:20171030211610p:plain
するとこんな画面がでてきます
f:id:shuzo_kino:20171030211614p:plain
デフォだとローカルDB構築しようとしますが、
ここはSQL Serverに接続を選びます
f:id:shuzo_kino:20171030211617p:plain

現行あるインスタンスから選択
新規のインスタンスSQL Server 2016で作ってやる必要があります。
f:id:shuzo_kino:20171030211623p:plain
画面が切り替わるので
f:id:shuzo_kino:20171030211620p:plain
下のプルダウンでテーブルを選ぶ
f:id:shuzo_kino:20171030211634p:plain

左端のサーバタブから、中身が確認できます
f:id:shuzo_kino:20171030211639p:plain

【イベントログ】第2回 OpenRobotArm.org 勉強会を開催しました

atnd.org
電気通信大学西11号棟にて、第2回 OpenRobotArm.org 勉強会を開催しました。
今回は日本Androidの会秋葉原支部ロボット部様との共催です。

季節外れも大概な台風22号の影響で足元の悪い中、お集まり頂きありがとうございます。

会場の様子

13:00 オープニング、自己紹介ほか
13:30 セミナー1 TsukArm近況報告 株式会社MTMシステムズ 城野
14:00 セミナー2 防水・耐水・防塵環境での電装系 秘密結社オープンフォース 河野
14:30 セミナー3 ロボットに意識を実装したいが… 日本Androidの会秋葉原支部ロボット部 部長 清水
15:00 休憩,デモタイム
15:15 LT
arm-mdkでmbedの注意点/mbed使用と感想/mbed祭りの内容 やましょう
ESP32の機能をブロックプログラムで使えるトレーニングキットAKBONE Release5 河野
オープンソースな人型ロボットInMoovを作ってみた 城野
ロボットアームを3Dアニメから考える 遠藤


C#とClosedXMLを使ってExcelファイルをつくってみる その2:既存のファイルを弄る

shuzo-kino.hateblo.jp
の続きです。

何らかのテンプレートがあって、それを弄りたい場合。

実際のところ

using ClosedXML.Excel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClosedXMLTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var filepath = "/Users/shuzo_kino/csharp/HelloWorld.xlsx";
            //インスタンスの作成。作業シートとデータシートの二枚構成
            var workbook = new XLWorkbook(filepath);
            //データシートの指定は1はじめ通し番号でも、名前でもいけます
            var worksheet = workbook.Worksheet(1);
            var datasheet = workbook.Worksheet("dataSheet");
           
            //まずは素の入力
            worksheet.Cell("A1").Value = "50";

            //太字で枠付き
            var cell = worksheet.Cell("B2");
            cell.Value = "33";
            cell.Style.Font.Bold = true;
            cell.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;

            //参照用シートからデータを作業用シートへコピー
            datasheet.Cell("A1").Value = 34;
            worksheet.Cell("C3").Value = datasheet.Cell("A1").Value;

            //列幅の自動調整
            worksheet.Columns().AdjustToContents();


            //出力
            workbook.SaveAs(filepath);
        }
    }
}

C#とClosedXMLを使ってExcelファイルをつくってみる

今回はC#とClosedXMLを使ってExcelファイルをつくってみます。

実際のところ

環境

スクリプト

"/Users/shuzo_kino/csharp/"というディレクトリに、HelloWorld.xlsxを用意する想定で行きます。
手早くチェックしたいので、作成はコンソールプロジェクトで。

using ClosedXML.Excel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClosedXMLTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //インスタンスの作成。作業シートとデータシートの二枚構成
            var workbook = new XLWorkbook();
            var worksheet = workbook.Worksheets.Add("workSheet");
            var datasheet = workbook.Worksheets.Add("dataSheet");

            //まずは素の入力
            worksheet.Cell("A1").Value = "Hello, World.";

            //太字で枠付き
            var cell = worksheet.Cell("B2");
            cell.Value = "Hello, ClosedXML.";
            cell.Style.Font.Bold = true;
            cell.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;

            //参照用シートからデータを作業用シートへコピー
            datasheet.Cell("A1").Value = 12;
            worksheet.Cell("C3").Value = datasheet.Cell("A1").Value;

            //列幅の自動調整
            worksheet.Columns().AdjustToContents();


            //出力
            workbook.SaveAs("/Users/shuzo_kino/csharp/HelloWorld.xlsx");
        }
    }
}

こんな感じで出力されるのが確認できます
f:id:shuzo_kino:20171027230400p:plain

【イベントログ】第7回おおた研究・開発フェア

第7回 おおた研究・開発フェア 産学連携・産産連携フェア in 大田区産業プラザPiO
25、26に大田区PIOにて開催された「おおた研究・開発フェア」に出展してきました

実際のところ

ものづくりの町蒲田という事で、加工屋さんの展示が多かったです。
加えて、開発フェアということで大学の展示もちらほら。

つくば市ベンチャーさんによる排熱再利用発電
適用温度域を制限することで、安価なエンジニアリングプラスチックを活用、
大きなコストダウンをしたとのこと

大田区のファブスペースさんの展示
なんと弾力性のある3Dプリント素材です
写真では分かりにくいですが、
感覚は散水ホース

.NET用パッケージマネージャNuGetでアレコレ拡張する

NuGetはWikipediaによると

NuGetとは.NET Frameworkに対応するフリー・アンド・オープンソースのパッケージマネージャである

とのこと。
brewやapt-get、chocolatyみたいなものですね。
提供されているパッケージ類も豊富でテストスイートからフロントエンド、DB系まで色々9000個程。
NuGet Gallery | Packages

Windows版なら、VisualStudio自体にも内蔵されています。
我々*NIX使い向けにはCLIも提供されていますのでソイツを使いましょう。
github.com
無事にブチ込んでから環境変数を再読込すると、以下のような感じで出てきます。

$ nuget 
NuGet Version: 4.3.0.4406
usage: NuGet <command> [args] [options] 
Type 'NuGet help <command>' for help on a specific command.

Available commands:

 add         Adds the given package to a hierarchical source. http sources are not supp
             orted. For more info, goto https://docs.nuget.org/consume/command-line-ref
             erence#add-command.

 config      NuGet 構成値を取得または設定します。

 delete      サーバーからパッケージを削除します。

 help (?)    全般的なヘルプ情報と他のコマンドに関するヘルプ情報を表示します。

 init        Adds all the packages from the <srcPackageSourcePath> to the hierarchical 
             <destPackageSourcePath>. http feeds are not supported. For more info, goto
             https://docs.nuget.org/consume/command-line-reference#init-command.

 install     指定されたソースを使用してパッケージをインストールします。ソースが指定されていない場合、NuGet 構成ファイルに定義されているすべてのソースが使用
             されます。構成ファイルにソースが指定されていない場合、既定の NuGet フィードが使用されます。

 list        指定したソースのパッケージ一覧を表示します。ソースが指定されていない場合、%AppData%\NuGet\NuGet.config に定義されている
             すべてのソースが使用されます。NuGet.config にソースが指定されていない場合、既定の NuGet フィードが使用されます。

 locals      Clears or lists local NuGet resources such as http requests cache, temp ca
             che or machine-wide global packages folder.

 pack        指定された nuspec または project ファイルに基づいて、NuGet パッケージを作成します。

 push        サーバーにパッケージをプッシュして、公開します。
             NuGet の既定の構成を取得するには、%AppData%\NuGet\NuGet.config を読み込み、ドライブのルートから現在のディレクトリ
             の間にあるすべての nuget.config または .nuget\nuget.config を読み込みます。

 restore     NuGet パッケージを復元します。

 setApiKey   指定されたサーバーの URL の API キーを保存します。URL が指定されていない場合、NuGet ギャラリーの API キーが保存されます。

 sources     %AppData%\NuGet\NuGet.config に指定されたソースの一覧を管理できます

 spec        新しいパッケージの nuspec を生成します。このコマンドをプロジェクト ファイル (.csproj, .vbproj, .fsproj) と同じ
             フォルダーで実行する場合、トークン化された nuspec ファイルが作成されます。

 update      パッケージを利用可能な最新バージョンに更新します。このコマンドで、NuGet.exe も更新されます。

詳細については、http://docs.nuget.org/docs/reference/command-line-reference を参照してください

つかいかた

たとえば、Office2007以降で採用されたOpen XMLをよろしく使うClosed XMLだと
NuGet Gallery | ClosedXML 0.90.0
これだけ。

$ nuget install ClosedXML
Feeds used:
  https://api.nuget.org/v3/index.json

  GET https://api.nuget.org/v3/registration3-gz-semver2/closedxml/index.json
  OK https://api.nuget.org/v3/registration3-gz-semver2/closedxml/index.json 1041ms


Attempting to gather dependency information for package 'ClosedXML.0.90.0' with respect to project '/Users/shuzo_kino/csharp', targeting 'Any,Version=v0.0'
Gathering dependency information took 1.68 min
Attempting to resolve dependencies for package 'ClosedXML.0.90.0' with DependencyBehavior 'Lowest'
Resolving dependency information took 0 ms
Resolving actions to install package 'ClosedXML.0.90.0'
Resolved actions to install package 'ClosedXML.0.90.0'
Retrieving package 'ClosedXML 0.90.0' from 'nuget.org'.
Retrieving package 'DocumentFormat.OpenXml 2.7.2' from 'nuget.org'.
Retrieving package 'FastMember.Signed 1.1.0' from 'nuget.org'.
Retrieving package 'System.IO.FileSystem.Primitives 4.0.1' from 'nuget.org'.
Retrieving package 'System.IO.Packaging 4.0.0' from 'nuget.org'.
  GET https://api.nuget.org/v3-flatcontainer/closedxml/0.90.0/closedxml.0.90.0.nupkg
  OK https://api.nuget.org/v3-flatcontainer/closedxml/0.90.0/closedxml.0.90.0.nupkg 1042ms
Installing ClosedXML 0.90.0.
  GET https://api.nuget.org/v3-flatcontainer/fastmember.signed/1.1.0/fastmember.signed.1.1.0.nupkg
  OK https://api.nuget.org/v3-flatcontainer/fastmember.signed/1.1.0/fastmember.signed.1.1.0.nupkg 935ms
Installing FastMember.Signed 1.1.0.
  GET https://api.nuget.org/v3-flatcontainer/documentformat.openxml/2.7.2/documentformat.openxml.2.7.2.nupkg
Adding package 'FastMember.Signed.1.1.0' to folder '/Users/shuzo_kino/csharp'
Added package 'FastMember.Signed.1.1.0' to folder '/Users/shuzo_kino/csharp'
Successfully installed 'FastMember.Signed 1.1.0' to /Users/shuzo_kino/csharp
  OK https://api.nuget.org/v3-flatcontainer/documentformat.openxml/2.7.2/documentformat.openxml.2.7.2.nupkg 1155ms
Installing DocumentFormat.OpenXml 2.7.2.
  GET https://api.nuget.org/v3-flatcontainer/system.io.packaging/4.0.0/system.io.packaging.4.0.0.nupkg
  OK https://api.nuget.org/v3-flatcontainer/system.io.packaging/4.0.0/system.io.packaging.4.0.0.nupkg 996ms
Installing System.IO.Packaging 4.0.0.
  GET https://api.nuget.org/v3-flatcontainer/system.io.filesystem.primitives/4.0.1/system.io.filesystem.primitives.4.0.1.nupkg
  OK https://api.nuget.org/v3-flatcontainer/system.io.filesystem.primitives/4.0.1/system.io.filesystem.primitives.4.0.1.nupkg 880ms
Installing System.IO.FileSystem.Primitives 4.0.1.
Adding package 'System.IO.FileSystem.Primitives.4.0.1' to folder '/Users/shuzo_kino/csharp'
Added package 'System.IO.FileSystem.Primitives.4.0.1' to folder '/Users/shuzo_kino/csharp'
Successfully installed 'System.IO.FileSystem.Primitives 4.0.1' to /Users/shuzo_kino/csharp
Adding package 'System.IO.Packaging.4.0.0' to folder '/Users/shuzo_kino/csharp'
Added package 'System.IO.Packaging.4.0.0' to folder '/Users/shuzo_kino/csharp'
Successfully installed 'System.IO.Packaging 4.0.0' to /Users/shuzo_kino/csharp
Adding package 'DocumentFormat.OpenXml.2.7.2' to folder '/Users/shuzo_kino/csharp'
Added package 'DocumentFormat.OpenXml.2.7.2' to folder '/Users/shuzo_kino/csharp'
Successfully installed 'DocumentFormat.OpenXml 2.7.2' to /Users/shuzo_kino/csharp
Adding package 'ClosedXML.0.90.0' to folder '/Users/shuzo_kino/csharp'
Added package 'ClosedXML.0.90.0' to folder '/Users/shuzo_kino/csharp'
Successfully installed 'ClosedXML 0.90.0' to /Users/shuzo_kino/csharp
Executing nuget actions took 13.18 sec

参考もと

docs.microsoft.com