.Net開発
昔は Thread や BackgroundWorker を使ってマルチスレッド処理を書いていましたが、久しぶりにC#開発をやると、async/await (非同期メソッド) という方法が今は最新のようだということを知りました。 既存のコードにもあまり変更を加える必要もなく、処理も…
(.Net)C#から遅延バインディングでExcelファイルに読み書きするで、C#からExcelへ遅延バインディングを使ったアクセスを書きましたが、今回は任意の範囲のデータの並び替え(ソート)を行う方法です。 並び替えはRangeオブジェクトの Sort メソッドで設定でき…
(.Net)C#から遅延バインディングでExcelファイルに読み書きするで、C#からExcelへ遅延バインディングを使ったアクセスを書きましたが、今回はオートフィルタを設定する方法です。 Rangeオブジェクトの AutoFilter メソッドで設定できます。 例えば、A1:B5の…
(.Net)C#から遅延バインディングでExcelファイルに読み書きするで、C#からExcelへ遅延バインディングを使ったアクセスを書きましたが、今回は列幅、行高さを変更する方法です。 Rangeオブジェクトの ColumnWidth と、RowHeight で指定できるようです。 例え…
(.Net)C#から遅延バインディングでExcelファイルに読み書きするで、C#からExcelへ遅延バインディングを使ったアクセスを書きましたが、今回はセルの罫線を引く方法です。 流れとして、Range インスタンスから Borders を取得し、そこから Border(どこの線か)…
(.Net)C#から遅延バインディングでExcelファイルに読み書きするで、C#からExcelへ遅延バインディングを使ったアクセスを書きましたが、今回はセルの書式設定を行う方法です。Rangeオブジェクトの NumberFormatLocal プロパティに設定してやればいいようです…
接続型でDBにクエリを実行した場合、結果はDateReaderで取得することになるかと思います。 その結果をさくっとDataTableに変換したいという場合は、DataTable.Loadメソッドを使うといいようです。 例えば System.Data.SQLite ライブラリを使った場合はこんな…
System.Data.SQLite ライブラリを使って共有フォルダのデータベースファイルに接続するには、以下のようにしたのではダメでした。 using (var conn = new SQLiteConnection(@"Data Source=\\srv01\share\hoge.sqlite")){ .... } 以下のように、余分に \ を付…
.Netアプリでスタンドアロンデータベースを使うときはいつもMDBを使ってたんですが、今回はじめてSQLiteを使ってみました。 .Netアプリケーションから SQLite にアクセスする方法はいくつかあるらしいですが、今回はVB.NETから組み込みデータベースのSQLite…
列挙型の値を指定するときに、動的に出来れば便利って思ってました。 例えば、 enum Hoge{ alpha, bravo, charlie, delta, echo } という列挙型があって、設定ファイルから読み込んだ文字列値を元にこの列挙型を設定したい時などです。 そのような場合は、以…
例えば、外部ファイルに値とそれに対応する型が書かれており、それを.Netアプリで読み込んだ時に、ファイルに記述された型に合わせて値を変数化してやりたいといった場合の方法です。 この場合、Convert.ChangeType メソッドを使ってやるといいようです。 Ty…
以前に、.Net(C#)アプリからExcelのVBAを呼び出したい(遅延バインディング)で、C#からマクロを実行する方法を書きました。今回は、より一般的なセルへの読み書き方法のメモです。 開発マシンのExcelのバージョンに左右されないように遅延バインディングでア…
固定長のテキストデータを読み込んで何か処理をさせたいという場合で、テキストデータのフィールドの桁数がしょっちゅう変わるのでそのたびにソースを直すのは大変という事態が発生しました。 なので、読み込むテキストデータのフィールドを外部ファイルで定…
.Netの System.IO.Directory.Delete(path, true) を使ってサブフォルダ・ファイルごと任意のディレクトリを削除しようとしたのですが、"アクセスが拒否されました" とIOException例外になります。 ??ってなってたら、サブフォルダの一つが読み取り専用属性…
任意のプロセスのCPU使用率を求めたいと思ってググっていたらVisualStudioフォーラム:複数のプロセス毎のCPU使用率同時取得にドンピシャな答えがありました。 コピペになりますが、ベンチマークソフト SUPER_PI のCPU使用率を求めたい時はこうなります。 mS…
WindowsServer2003上でターミナルサーバを運用してますが、どうやらメモリを使いすぎているユーザがいるようです。 それで、数日間どのユーザがどのプロセスでメモリを使いすぎているのか経過調査を行うことにしました。 当初はパフォーマンスログで取ろうか…
ClickOnceでアプリケーションを配置してるんですが、バグを修正し新バージョンを発行しなおしました。 それでクライアント側のショートカットからアプリケーションを起動しようとすると、更新チェック後にエラーが発生し起動できません。 (ちなみに、アプリ…
以前に(VB.Net)ハンドルされない例外を捕まえる方法という記事を書きましたが、この内容のC#版のコードをメモ代わりに載せておきます。 まず、メインフォームのコンストラクタに以下のイベントハンドラを登録します。 //キャッチされない例外をとらえるイベ…
DataGridViewで、ある列は小数点第一位までの入力を許可させ、それ以外の値は認めないという要件を満たす方法です。 ちょっと悩んだんですが、まずfloatにパースできるかどうか判断します。 floatにパースできるようなら、10を掛け、それがintにパースできる…
DataGridViewでコンテキストメニューを割り当てた時、右クリックをしても、クリックしたセルに対してイベント走るのではなく、その時に選択されているセルに対してイベントが走ってしまいます。 Excelみたいに、右クリックしたら、マウスポインタの位置の行…
下記のように文字列型で数値をいれているケースが有るとします。 string no = "1234"; これを7桁にし、先頭に0で埋めたいというケースの場合、String.PadLeft メソッドを使えばいいようです。 string no = "1234"; no = no.PadLeft(7,'0'); こうすると、0001…
DataTable.Selectメソッドを使って、データの抽出を行ってました。 下記のように検索対象の列は文字列型ですが、中身は数値が入っています。 string strNo = "10"; DataTable tbl = new DataTable(); tbl.Columns.Add("no"); tbl.Columns.Add("name"); tbl.R…
DataTableの特定の列にアクセするときの列の指定で、列名でアクセスすると、DataColumnやインデックスでアクセスするときに比べ2倍ほど遅くなるようです。 なので、列にアクセするときはなるべくインデックスかDataColumnを使いましょう。 同じように、ルー…
WindowsServer2008 R2 のサーバで、.Net のアセンブリをGACに、C:\Windows\assembly フォルダへのドラッグアンドドロップで登録したかったんですが、結構ハマリました。 (エクスプローラからのGACからのアンインストールも同様だと思います。) 原因はUACです…
検証で、.Net Framework1.1の HelloWorld アプリケーションを作る必要がありました。 しかし、.Net Framewrok1.1用のIDEである VisutalStudio2003 が有りません。 ということで、IDEを使わずにコンパイルしてみました。 コンパイルには、.NetFramework1.1 SD…
最近知ったんですが、例えば .Net Framework1.0 でアプリケーションを作成して、実行環境に .Net Framework2.0 しか入ってない場合、アプリケーションは2.0上のCLR(Common Language Runtime)で動こうとします。(基本的には、ビルドされた時と同じバージョン…
.NetからOpenOfficeCalcへの操作を汎用化したDLL(Part2)の続きで、Part3です。(C#) #region 各プロパティ設定デリゲートメソッド /// 文字色を設定する。(デリゲート経由で呼び出される) /// private void SetCharColorDelegate(PropertiesDelegateParam prm…
.NetからOpenOfficeCalcへの操作を汎用化したDLL(Part1)の続きで、Part2です。(C#) /// セル背景色を取得(先にSelectCellでセル指定が必要) /// 取得した文字色 public Color GetCellBackColorr() { Action getPropParam = GetCellBackColorDelegate; Proper…
.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のCalcを操作する基本の方法は、(.Net,OpenOffice).NetからCalc操作時に罫線(枠線)を引くが参考になります。 今回は、セルの文字色、背景色、文字の大きさ、セル枠までのスペース(パディング)を変更する方法です。 サンプルは、OpenOffice…