3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

.Net開発

(C#)Task.Run,await/asyncを使ったマルチスレッドの簡単例

昔は Thread や BackgroundWorker を使ってマルチスレッド処理を書いていましたが、久しぶりにC#開発をやると、async/await (非同期メソッド) という方法が今は最新のようだということを知りました。 既存のコードにもあまり変更を加える必要もなく、処理も…

(.Net)C#からExcelへの遅延バインディングで、ソートする

(.Net)C#から遅延バインディングでExcelファイルに読み書きするで、C#からExcelへ遅延バインディングを使ったアクセスを書きましたが、今回は任意の範囲のデータの並び替え(ソート)を行う方法です。 並び替えはRangeオブジェクトの Sort メソッドで設定でき…

(.Net)C#からExcelへの遅延バインディングで、オートフィルタを設定する

(.Net)C#から遅延バインディングでExcelファイルに読み書きするで、C#からExcelへ遅延バインディングを使ったアクセスを書きましたが、今回はオートフィルタを設定する方法です。 Rangeオブジェクトの AutoFilter メソッドで設定できます。 例えば、A1:B5の…

(.Net)C#からExcelへの遅延バインディングで、列幅を調整する

(.Net)C#から遅延バインディングでExcelファイルに読み書きするで、C#からExcelへ遅延バインディングを使ったアクセスを書きましたが、今回は列幅、行高さを変更する方法です。 Rangeオブジェクトの ColumnWidth と、RowHeight で指定できるようです。 例え…

(.Net)C#からExcelへの遅延バインディングで、罫線を引く

(.Net)C#から遅延バインディングでExcelファイルに読み書きするで、C#からExcelへ遅延バインディングを使ったアクセスを書きましたが、今回はセルの罫線を引く方法です。 流れとして、Range インスタンスから Borders を取得し、そこから Border(どこの線か)…

(.Net)C#からExcelへの遅延バインディングで、書式設定を行う

(.Net)C#から遅延バインディングでExcelファイルに読み書きするで、C#からExcelへ遅延バインディングを使ったアクセスを書きましたが、今回はセルの書式設定を行う方法です。Rangeオブジェクトの NumberFormatLocal プロパティに設定してやればいいようです…

(.NET)DataReaderで取得したデータをDataTableとしてもつ方法

接続型でDBにクエリを実行した場合、結果はDateReaderで取得することになるかと思います。 その結果をさくっとDataTableに変換したいという場合は、DataTable.Loadメソッドを使うといいようです。 例えば System.Data.SQLite ライブラリを使った場合はこんな…

(.NET,SQLite)共有フォルダのデータベースファイルに接続するには...

System.Data.SQLite ライブラリを使って共有フォルダのデータベースファイルに接続するには、以下のようにしたのではダメでした。 using (var conn = new SQLiteConnection(@"Data Source=\\srv01\share\hoge.sqlite")){ .... } 以下のように、余分に \ を付…

(.Net,SQLite)データベースにSQLiteを使ってみた

.Netアプリでスタンドアロンデータベースを使うときはいつもMDBを使ってたんですが、今回はじめてSQLiteを使ってみました。 .Netアプリケーションから SQLite にアクセスする方法はいくつかあるらしいですが、今回はVB.NETから組み込みデータベースのSQLite…

(.Net)動的に列挙型の値を取得したい(文字列から列挙型の値にしたい)

列挙型の値を指定するときに、動的に出来れば便利って思ってました。 例えば、 enum Hoge{ alpha, bravo, charlie, delta, echo } という列挙型があって、設定ファイルから読み込んだ文字列値を元にこの列挙型を設定したい時などです。 そのような場合は、以…

(.Net)キャストを動的に行いたい

例えば、外部ファイルに値とそれに対応する型が書かれており、それを.Netアプリで読み込んだ時に、ファイルに記述された型に合わせて値を変数化してやりたいといった場合の方法です。 この場合、Convert.ChangeType メソッドを使ってやるといいようです。 Ty…

(.Net)C#から遅延バインディングでExcelファイルに読み書きする

以前に、.Net(C#)アプリからExcelのVBAを呼び出したい(遅延バインディング)で、C#からマクロを実行する方法を書きました。今回は、より一般的なセルへの読み書き方法のメモです。 開発マシンのExcelのバージョンに左右されないように遅延バインディングでア…

(.Net)固定長のテキストデータを読み込むための汎用的な方法

固定長のテキストデータを読み込んで何か処理をさせたいという場合で、テキストデータのフィールドの桁数がしょっちゅう変わるのでそのたびにソースを直すのは大変という事態が発生しました。 なので、読み込むテキストデータのフィールドを外部ファイルで定…

(.Net)フォルダ削除のDirectory.Delete(path, true)にやられた

.Netの System.IO.Directory.Delete(path, true) を使ってサブフォルダ・ファイルごと任意のディレクトリを削除しようとしたのですが、"アクセスが拒否されました" とIOException例外になります。 ??ってなってたら、サブフォルダの一つが読み取り専用属性…

(.Net)任意のプロセスのCPU使用率を出すコード

任意のプロセスのCPU使用率を求めたいと思ってググっていたらVisualStudioフォーラム:複数のプロセス毎のCPU使用率同時取得にドンピシャな答えがありました。 コピペになりますが、ベンチマークソフト SUPER_PI のCPU使用率を求めたい時はこうなります。 mS…

(.Net)ターミナルサーバでユーザのプロセスのメモリ使用量を取りたい。

WindowsServer2003上でターミナルサーバを運用してますが、どうやらメモリを使いすぎているユーザがいるようです。 それで、数日間どのユーザがどのプロセスでメモリを使いすぎているのか経過調査を行うことにしました。 当初はパフォーマンスログで取ろうか…

(.NET)ClickOnceで発行後にアプリを起動すると「配置IDがサブスクリプションと一致しません」と怒られる

ClickOnceでアプリケーションを配置してるんですが、バグを修正し新バージョンを発行しなおしました。 それでクライアント側のショートカットからアプリケーションを起動しようとすると、更新チェック後にエラーが発生し起動できません。 (ちなみに、アプリ…

(C#)ハンドルされない例外を捕まえる方法

以前に(VB.Net)ハンドルされない例外を捕まえる方法という記事を書きましたが、この内容のC#版のコードをメモ代わりに載せておきます。 まず、メインフォームのコンストラクタに以下のイベントハンドラを登録します。 //キャッチされない例外をとらえるイベ…

(.Net)小数点第一位まで入力可という入力チェック

DataGridViewで、ある列は小数点第一位までの入力を許可させ、それ以外の値は認めないという要件を満たす方法です。 ちょっと悩んだんですが、まずfloatにパースできるかどうか判断します。 floatにパースできるようなら、10を掛け、それがintにパースできる…

(.Net)DataGridViewで右クリックしたときに行選択したい

DataGridViewでコンテキストメニューを割り当てた時、右クリックをしても、クリックしたセルに対してイベント走るのではなく、その時に選択されているセルに対してイベントが走ってしまいます。 Excelみたいに、右クリックしたら、マウスポインタの位置の行…

(.Net)文字列で桁を揃えるため0埋めしたい

下記のように文字列型で数値をいれているケースが有るとします。 string no = "1234"; これを7桁にし、先頭に0で埋めたいというケースの場合、String.PadLeft メソッドを使えばいいようです。 string no = "1234"; no = no.PadLeft(7,'0'); こうすると、0001…

(.Net)DataTable.Selectの条件は引用符でくくらないとおかしなことになる

DataTable.Selectメソッドを使って、データの抽出を行ってました。 下記のように検索対象の列は文字列型ですが、中身は数値が入っています。 string strNo = "10"; DataTable tbl = new DataTable(); tbl.Columns.Add("no"); tbl.Columns.Add("name"); tbl.R…

(.Net)DataTableへのアクセスで列名で指定すると遅くなる

DataTableの特定の列にアクセするときの列の指定で、列名でアクセスすると、DataColumnやインデックスでアクセスするときに比べ2倍ほど遅くなるようです。 なので、列にアクセするときはなるべくインデックスかDataColumnを使いましょう。 同じように、ルー…

(WindowsServer2008R2)GACに.Netアセンブリを登録したいがassemblyフォルダへのドラッグで拒否られる

WindowsServer2008 R2 のサーバで、.Net のアセンブリをGACに、C:\Windows\assembly フォルダへのドラッグアンドドロップで登録したかったんですが、結構ハマリました。 (エクスプローラからのGACからのアンインストールも同様だと思います。) 原因はUACです…

VisualStudio無いけど、.Net Framework1.1のアプリを作りたい

検証で、.Net Framework1.1の HelloWorld アプリケーションを作る必要がありました。 しかし、.Net Framewrok1.1用のIDEである VisutalStudio2003 が有りません。 ということで、IDEを使わずにコンパイルしてみました。 コンパイルには、.NetFramework1.1 SD…

(.Net)ビルドされた時と実行時のFramework CLRのバージョンを知りたい

最近知ったんですが、例えば .Net Framework1.0 でアプリケーションを作成して、実行環境に .Net Framework2.0 しか入ってない場合、アプリケーションは2.0上のCLR(Common Language Runtime)で動こうとします。(基本的には、ビルドされた時と同じバージョン…

.NetからOpenOfficeCalcへの操作を汎用化したDLL(Part3)

.NetからOpenOfficeCalcへの操作を汎用化したDLL(Part2)の続きで、Part3です。(C#) #region 各プロパティ設定デリゲートメソッド /// 文字色を設定する。(デリゲート経由で呼び出される) /// private void SetCharColorDelegate(PropertiesDelegateParam prm…

NetからOpenOfficeCalcへの操作を汎用化したDLL(Part2)

.NetからOpenOfficeCalcへの操作を汎用化したDLL(Part1)の続きで、Part2です。(C#) /// セル背景色を取得(先にSelectCellでセル指定が必要) /// 取得した文字色 public Color GetCellBackColorr() { Action getPropParam = GetCellBackColorDelegate; Proper…

NetからOpenOfficeCalcへの操作を汎用化したDLL(Part1)

.NetからOpenOfficeCalcへの操作を汎用化したDLLのPart1です。(C#) using System; using System.Collections.Generic; using System.Text; using uno.util; using unoidl.com.sun.star.frame; using unoidl.com.sun.star.lang; using unoidl.com.sun.star.sh…

(.Net,OpenOffice).NetからCalc操作時にセルのプロパティを変更する

.NetからOpenOfficeのCalcを操作する基本の方法は、(.Net,OpenOffice).NetからCalc操作時に罫線(枠線)を引くが参考になります。 今回は、セルの文字色、背景色、文字の大きさ、セル枠までのスペース(パディング)を変更する方法です。 サンプルは、OpenOffice…