ラベル C# の投稿を表示しています。 すべての投稿を表示
ラベル C# の投稿を表示しています。 すべての投稿を表示

2018年2月8日木曜日

【UWP】"uwp the name does not exist in the namespace"エラーへの対応

UWPの画面で「」みたいなことを書いたら、Modelで定義しているNamespaceにHogehogeなんてねーよってエラーが出ることがある。
よくわかんないけど以下の手順で解決。

1.一回エラーになってるところを削除してビルド
2.ビルドが通ったらソースを戻すとあら不思議エラーが消えちゃう

なおModelの定義は、最初のPageタグ内の属性で定義する。
xmlns:Model="using:Namespage"

2018年1月15日月曜日

C#で機械学習

C#で機械学習を行うためのライブラリの記事があったので、いつか時間があるときにやってみようと思いメモ。

C#で機械学習をやってみた(Accord.NET)

2017年1月18日水曜日

【C#】行列番号からExcelのアドレスへの変換

【追記】
EPPlusにメソッドがあったのでそっちを使ったほうがらくちんです。
 OfficeOpenXml.ExcelAddress.GetAddress

タイトルそのまま、行番号、列番号を引数に渡してExcelのアドレス("A1"とか)に変換する処理。
そのまんまの処理なので特に開設はなしで。
コードをまとめるためにメソッド内でDictionaryのオブジェクトを作っていますが、使うときはいい感じのところで定義してください。

        /// 
        /// 行列番号をExcelのアドレス文字列に変換
        /// 
        /// 行番号
        /// 列番号
        /// 
        public static string ConvertExcelAddressString(int row, int col)
        {
            Dictionary DicInt2Alphabet = new Dictionary()
            {
                { 1, "A" },
                { 2, "B" },
                { 3, "C" },
                { 4, "D" },
                { 5, "E" },
                { 6, "F" },
                { 7, "G" },
                { 8, "H" },
                { 9, "I" },
                { 10, "J" },
                { 11, "K" },
                { 12, "L" },
                { 13, "M" },
                { 14, "N" },
                { 15, "O" },
                { 16, "P" },
                { 17, "Q" },
                { 18, "R" },
                { 19, "S" },
                { 20, "T" },
                { 21, "U" },
                { 22, "V" },
                { 23, "W" },
                { 24, "X" },
                { 25, "Y" },
                { 26, "Z" },
            };
            string address = "";
            int colTmp = col;

            //列番号がアルファベットの数よりも大きい場合(変換後AA以上となる場合) 2桁目の文字列を先に算出
            if(colTmp > DicInt2Alphabet.Count)
            {
                address = DicInt2Alphabet[col / DicInt2Alphabet.Count];
                colTmp = colTmp % DicInt2Alphabet.Count;
            }

            //行列番号を変換
            address += DicInt2Alphabet[colTmp] + row.ToString();

            return address;
        }

LINQ to Entitiesでの文字列大小比較

LINQではint.Parseが使えないので、文字列カラムを大小比較するにはCompareToメソッドを使用する。

例はstartDateが文字列で定義されているタコなDBからデータを抽出する場合。
しかも比較対象のパラメータがint型のため、事前にStringに変換する必要あり。
#LINQではtoStringメソッドが使用できないため

string startDate = this.param.startDate.toString();
var query =
    from ticket in _context.Tickets
    where ticket.StartDate.CompareTo(startDate) >= 0
    select ticket;

2017年1月6日金曜日

WebAPIでEPPlusで作成したExcelブックをダウンロードする手順

ASP.NetでWebAPIを使ったサーバサイド処理にて、
EPPlusで作成したExcelブックをダウンロードさせる手順。
細かいところは省略してます。

public HttpResponseMessage Get([FromUri] SagyouNumKousuParamModelGet modelParam)
{
    //レスポンスインスタンス生成
    HttpResponseMessage response = this.Request.CreateResponse(HttpStatusCode.OK);

    using (ExcelPackage inputFile = new ExcelPackage(new System.IO.FileInfo(HttpContext.Current.Server.MapPath("./") + "assets\\Template.xlsx"), false))
    {
        //inputFileに対して色々と処理
        
        //Content作成
        response.Content = new ByteArrayContent(inputFile.GetAsByteArray());
        //Contentヘッダ設定
        response.Content.Headers.Add("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.Content.Headers.Add("content-disposition", "attachment;  filename=Sample.xlsx");
    }
}