2018年10月31日水曜日

EPPLUS 折り返して全体を表示 セルに合わせて縮小

折り返して全体を表示
sheet.Cells["A1"].Value = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
sheet.Cells["A1"].Style.WrapText = true;

セルに合わせて縮小
sheet.Cells["A3"].Value = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
sheet.Cells["A3"].Style.ShrinkToFit = true;

2018年10月30日火曜日

FireFox しばらく未接続語、タブもしくはurlを変更しても新規ページが表示されない

FireFox しばらく未接続語、タブもしくはurlを変更しても新規ページが表示されない

  1. アドレスバーabout:config と入力し、Enter キーを押します。
    • about:config の "動作保証対象外になります!" という警告ページが表示されます。危険性を承知の上で使用する をクリックし、about:config ページを開いてください。
  2. 設定リスト内で右クリック して 新規作成 を選択し、真偽値 を選択してください。
  3. 新しい 真偽値の設定名 フィールドに network.dns.disablePrefetch と入力し、OK ボタンをクリックしてください。
  4. 次に、true を選択して値を設定し、OK ボタンをクリックしてください。 

2018年10月25日木曜日

EPPLUS 数字フォーマット マイナスなら赤字で編集を行う

EPPLUS 数字フォーマット マイナスなら赤字で編集を行う

sheet.Column(10).Style.Numberformat.Format = "#,##0; [red]-#,##0";

 通常は #,##0        色指定無し
[red]-#,##0           マイナスなら赤で編集 数字3桁でカンマ編集

2018年10月24日水曜日

C# font 複数の書式を設定する場合

C# font 複数の書式を設定する場合

// 上の例に加え、斜体のスタイルを設定する
 this.textBox1.Font = new Font("Arial", 12, FontStyle.Bold | FontStyle.Italic);

FontStyle を | で結合する

2018年10月23日火曜日

Oracle Sqlplusで余計な出力をしない方法

set echo off
set linesize 1000
set pagesize 0
set trimspool on
set feedback off
set colsep ','
spool c:\temp\tab.csv
select * from tab;
spool off

EPPlusのグルーピング方法

EPPlusのグルーピング方法

//明細グルーピング編集
sheet.Row(vY).OutlineLevel = 2;
sheet.Row(vY).Collapsed = true;

//合計グルーピング編集
sheet.Row(vY).OutlineLevel = 1;

Level = 1を総合計
Level = 2を担当者合計に割当

C# key break処理 キーブレイク処理

C#でキーブレイク処理をすることになった。
COBOLの時は1件読込み後、キーブレイク変数をセットとして
perform untilで回していたけど、C#の場合は、LINQを使った方がきれいに書ける。

            //最初は月度でブレイク
            var yearMonths = items.GroupBy(x => x.月度);

            foreach (var ym in yearMonths) {

                //シート追加&ヘッダ処理
                if (ym.Key == pic売上年月_開始.SelectedDate.Value.ToString("yyyyMM")) {   //最初の月度ならシート名を編集
                    sheet.Name = ym.Key.Substring(0, 4) + "年" + ym.Key.Substring(4, 2) + "月";
                }
                else {
                    package.Workbook.Worksheets.Add(ym.Key.Substring(0, 4) + "年" + ym.Key.Substring(4, 2) + "月");
                    vSt++;
                    sheet = package.Workbook.Worksheets[vSt];
                }

                sheet.Cells["F1"].Value = ym.Key.Substring(0,4) + " 年 " + ym.Key.Substring(4,2) + " + 月現在";
                sheet.Cells["P1"].Value = DateTime.Now.ToString("    yyyy/MM/dd HH:mm:ss");

                //列Aから列Eまで非表示
                sheet.Column(1).Hidden = true;
                sheet.Column(2).Hidden = true;
                sheet.Column(3).Hidden = true;
                sheet.Column(4).Hidden = true;
                sheet.Column(5).Hidden = true;

                sheet.Column(7).Hidden = true;
                sheet.Column(8).Hidden = true;
                sheet.Column(9).Hidden = true;

                //ヘッダー項目編集
                sheet.Cells["F1"].Value = DateTime.Today.ToString("yyyy 年 MM月現在");
                sheet.Cells["K1"].Value = "  *** 担当者別売上統計表 ***";
                sheet.Cells["P1"].Value = DateTime.Now.ToString("    yyyy/MM/dd HH:mm:ss");

                sheet.Cells["A3"].Value = "年月";
                sheet.Cells["B3"].Value = "部門";
                sheet.Cells["C3"].Value = "部門名";
                sheet.Cells["D3"].Value = "課";
                sheet.Cells["E3"].Value = "課名";
                sheet.Cells["F3"].Value = " コード担当者名";
                sheet.Cells["G3"].Value = "担当者名";
                sheet.Cells["H3"].Value = "得意先";
                sheet.Cells["I3"].Value = "得意先名";
                sheet.Cells["J3"].Value = "純売上";
                sheet.Cells["K3"].Value = "粗利";
                sheet.Cells["L3"].Value = "粗利率";
                sheet.Cells["M3"].Value = "売上";
                sheet.Cells["N3"].Value = "返品";
                sheet.Cells["O3"].Value = "返品率";
                sheet.Cells["P3"].Value = "値引";
                sheet.Cells["Q3"].Value = "値引率";
                sheet.Cells["R3"].Value = "売上目標";
                sheet.Cells["S3"].Value = "達成率";

                sheet.Cells["K1"].Style.Font.SetFromFont(new Font("MS Mincho", 16, FontStyle.Bold));

                sheet.Cells["A3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["B3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["C3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["D3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["E3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["F3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["G3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["H3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["I3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["J3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["K3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["L3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["M3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["N3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["O3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["P3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["Q3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["R3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                sheet.Cells["S3"].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));

                sheet.Column(06).Width = 30;    //F
                sheet.Column(11).Width = 16;    //J
                sheet.Column(12).Width = 16;    //K
                sheet.Column(13).Width = 7.5;   //L
                sheet.Column(14).Width = 16;    //M
                sheet.Column(15).Width = 16;    //N
                sheet.Column(16).Width = 7.5;   //O
                sheet.Column(17).Width = 16;    //P
                sheet.Column(18).Width = 7.5;   //Q
                sheet.Column(19).Width = 7.5;   //R

                //合計初期化
                tl1純売上 = 0;
                tl1粗利 = 0;
                tl1売上 = 0;
                tl1返品 = 0;
                tl1値引 = 0;
                tl1売上目標 = 0;

                //自社他社区分のヘッダ編集
                vY = 4;

                //自社他社区分でブレイク
                var v自社他社s = ym.GroupBy(x => x.自社他社区分);

                foreach (var v自社他社 in v自社他社s) {

                    //ヘッダ編集
                    if (v自社他社.Key == "2") {
                        sheet.Cells[vY, 06].Value = "【区分 一般売上】";
                    }
                    else {
                        sheet.Cells[vY, 06].Value = "【区分 社内売上】";
                    }
                    sheet.Cells[vY, 06].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                    vY++;

                    //初期化
                    tl2純売上 = 0;
                    tl2粗利 = 0;
                    tl2売上 = 0;
                    tl2返品 = 0;
                    tl2値引 = 0;
                    tl2売上目標 = 0;

                    //部門でブレイク
                    var v部門s = v自社他社.GroupBy(x => x.部門コード);

                    foreach (var v部門 in v部門s) {

                        var s1 = items.Where(x => x.月度 == ym.Key
                                               && x.自社他社区分 == v自社他社.Key
                                               && x.部門コード == v部門.Key).FirstOrDefault();

                        //ヘッダ編集
                        sheet.Cells[vY, 06].Value = s1.部門コード + " " + s1.部門名;
                        sheet.Cells[vY, 06].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));
                        vY++;

                        //初期化
                        tl3純売上 = 0;
                        tl3粗利 = 0;
                        tl3売上 = 0;
                        tl3返品 = 0;
                        tl3値引 = 0;
                        tl3売上目標 = 0;

                        //課でブレイク
                        var v課s = v部門.GroupBy(x => x.課コード);

                        foreach (var v課 in v課s) {

                            var s2 = items.Where(x => x.月度 == ym.Key
                                                   && x.自社他社区分 == v自社他社.Key
                                                   && x.部門コード == v部門.Key
                                                   && x.課コード == v課.Key).FirstOrDefault();

                            //初期化
                            tl4純売上 = 0;
                            tl4粗利   = 0;
                            tl4売上   = 0;
                            tl4返品   = 0;
                            tl4値引   = 0;
                            tl4売上目標 = 0;

                            //担当者でブレイク
                            var v担当者s = v課.GroupBy(x => x.担当者コード);

                            foreach (var v担当者 in v担当者s) {

                                var s3 = items.Where(x => x.月度 == ym.Key
                                                       && x.自社他社区分 == v自社他社.Key
                                                       && x.部門コード == v部門.Key
                                                       && x.課コード == v課.Key).FirstOrDefault();

                                //初期化
                                tl5純売上 = 0;
                                tl5粗利 = 0;
                                tl5売上 = 0;
                                tl5返品 = 0;
                                tl5値引 = 0;

                                //明細出力
                                var recs = items.Where(x => x.月度 == ym.Key
                                                        && x.自社他社区分 == v自社他社.Key
                                                        && x.部門コード == v部門.Key
                                                        && x.課コード == v課.Key
                                                        && x.担当者コード == v担当者.Key);

                                foreach (var rec in recs) {
                                    //明細編集
                                    v純売上 = (rec.売上金額計 + rec.返品金額計);
                                    v粗利率 = func率計算(rec.粗利金額計, v純売上);
                                    v返品率 = func率計算(rec.返品金額計, rec.売上金額計);
                                    v値引率 = func率計算(rec.値引金額計, v純売上);

                                    sheet.Cells[vY, 01].Value = rec.月度;
                                    sheet.Cells[vY, 02].Value = rec.部門コード;
                                    sheet.Cells[vY, 03].Value = rec.部門名;
                                    sheet.Cells[vY, 04].Value = rec.課コード;
                                    sheet.Cells[vY, 05].Value = rec.課名;
                                    sheet.Cells[vY, 06].Value = "    " + rec.得意先コード + " " + rec.得意先名;
                                    sheet.Cells[vY, 07].Value = rec.担当者名;
                                    sheet.Cells[vY, 08].Value = rec.得意先コード;
                                    sheet.Cells[vY, 09].Value = rec.得意先名;

                                    sheet.Cells[vY, 10].Value = v純売上;
                                    sheet.Cells[vY, 11].Value = rec.粗利金額計;
                                    sheet.Cells[vY, 12].Value = v粗利率;
                                    sheet.Cells[vY, 13].Value = rec.売上金額計;
                                    sheet.Cells[vY, 14].Value = rec.返品金額計;
                                    sheet.Cells[vY, 15].Value = v返品率;
                                    sheet.Cells[vY, 16].Value = rec.値引金額計;
                                    sheet.Cells[vY, 17].Value = v値引率;
                                    sheet.Cells[vY, 18].Value = "";
                                    sheet.Cells[vY, 19].Value = "";

                                    //集計計算
                                    tl5純売上 += v純売上;
                                    tl5粗利 += rec.粗利金額計;
                                    tl5売上 += rec.売上金額計;
                                    tl5返品 += rec.返品金額計;
                                    tl5値引 += rec.値引金額計;

                                    //セーブ項目
                                    sv売上目標 = rec.目標金額計;
                                    sv担当者Cd = rec.担当者コード;
                                    sv担当者名 = rec.担当者名;

                                    vY++;
                                }

                                //集計計算
                                tl4純売上 += tl5純売上;
                                tl4粗利 += tl5粗利;
                                tl4売上 += tl5売上;
                                tl4返品 += tl5返品;
                                tl4値引 += tl5値引;
                                tl4売上目標 += sv売上目標;

                                //担当者合計出力
                                set合計Row(ref sheet, vY, "     * " + sv担当者Cd + " " + sv担当者名,
                                        tl5純売上,
                                        tl5粗利,
                                        tl5売上,
                                        tl5返品,
                                        tl5値引,
                                        sv売上目標);
                                vY++;
                            }

                            //集計計算
                            tl3純売上 += tl4純売上;
                            tl3粗利   += tl4粗利;
                            tl3売上   += tl4売上;
                            tl3返品   += tl4返品;
                            tl3値引   += tl4値引;
                            tl3売上目標 += tl4売上目標;

                            //課合計出力
                            set合計Row(ref sheet, vY, "     * " + s2.課コード + " " + s2.課名,
                                    tl4純売上,
                                    tl4粗利,
                                    tl4売上,
                                    tl4返品,
                                    tl4値引,
                                    tl4売上目標);
                            vY++;
                        }

                        //集計計算
                        tl2純売上 += tl3純売上;
                        tl2粗利   += tl3粗利;
                        tl2売上   += tl3売上;
                        tl2返品   += tl3返品;
                        tl2値引   += tl3値引;
                        tl2売上目標 += tl3売上目標;

                        //部門合計出力
                        set合計Row(ref sheet, vY, "    ** " + s1.部門コード + " " + s1.部門名,
                                tl3純売上,
                                tl3粗利,
                                tl3売上,
                                tl3返品,
                                tl3値引,
                                tl3売上目標);
                        vY++;
                    }

                    //集計計算
                    tl1純売上 += tl2純売上;
                    tl1粗利   += tl2粗利;
                    tl1売上   += tl2売上;
                    tl1返品   += tl2返品;
                    tl1値引   += tl2値引;
                    tl1売上目標 += tl2売上目標;

                    //自社他社区分合計出力
                    set合計Row(ref sheet, vY, "   *** 区分計",
                            tl2純売上,
                            tl2粗利,
                            tl2売上,
                            tl2返品,
                            tl2値引,
                            tl2売上目標);
                    vY++;
                }

                //月度合計出力
                set合計Row(ref sheet, vY, "  **** 総合計",
                        tl1純売上,
                        tl1粗利,
                        tl1売上,
                        tl1返品,
                        tl1値引,
                        tl1売上目標);
            }

            package.Save();
        }
    }

    private void set合計Row(ref ExcelWorksheet isheet,
                            int iY,
                            string i計名,
                            decimal i純売上,
                            decimal i粗利,
                            decimal i売上,
                            decimal i返品,
                            decimal i値引,
                            decimal i売上目標) {

        isheet.Cells[iY, 06].Value = i計名;
        isheet.Cells[iY, 06].Style.Font.SetFromFont(new Font("MS Mincho", 11, FontStyle.Bold));

        isheet.Cells[iY, 10].Value = i純売上;
        isheet.Cells[iY, 11].Value = i粗利;
        isheet.Cells[iY, 12].Value = func率計算(i粗利, i純売上);
        isheet.Cells[iY, 13].Value = i売上;
        isheet.Cells[iY, 14].Value = i返品;
        isheet.Cells[iY, 15].Value = func率計算(i返品, i売上);
        isheet.Cells[iY, 16].Value = i値引;
        isheet.Cells[iY, 17].Value = func率計算(i値引, i純売上);
        isheet.Cells[iY, 18].Value = i売上目標;
        isheet.Cells[iY, 19].Value = func率計算(i純売上, i売上目標);
    }
    private decimal func率計算(decimal i1, decimal i2) {
        decimal vCal = 0;
        try {
            vCal = (i1 / i2) * 100;
        }
        catch { vCal = 0; }

        return vCal;
    }

2018年10月22日月曜日

Excel列(お借りしました)

列番列名
1A
2B
3C
4D
5E
6F
7G
8H
9I
10J
11K
12L
13M
14N
15O
16P
17Q
18R
19S
20T
21U
22V
23W
24X
25Y
26Z
27AA
28AB
29AC
30AD
31AE
32AF
33AG
34AH
35AI
36AJ
37AK
38AL
39AM
40AN
41AO
42AP
43AQ
44AR
45AS
46AT
47AU
48AV
49AW
50AX
51AY
52AZ
53BA
54BB
55BC
56BD
57BE
58BF
59BG
60BH
61BI
62BJ
63BK
64BL
65BM
66BN
67BO
68BP
69BQ
70BR
71BS
72BT
73BU
74BV
75BW
76BX
77BY
78BZ
79CA
80CB
81CC
82CD
83CE
84CF
85CG
86CH
87CI
88CJ
89CK
90CL
91CM
92CN
93CO
94CP
95CQ
96CR
97CS
98CT
99CU
100CV
101CW
102CX
103CY
104CZ
105DA
106DB
107DC
108DD
109DE
110DF
111DG
112DH
113DI
114DJ
115DK
116DL
117DM
118DN
119DO
120DP
121DQ
122DR
123DS
124DT
125DU
126DV
127DW
128DX
129DY
130DZ
131EA
132EB
133EC
134ED
135EE
136EF
137EG
138EH
139EI
140EJ
141EK
142EL
143EM
144EN
145EO
146EP
147EQ
148ER
149ES
150ET
151EU
152EV
153EW
154EX
155EY
156EZ
157FA
158FB
159FC
160FD
161FE
162FF
163FG
164FH
165FI
166FJ
167FK
168FL
169FM
170FN
171FO
172FP
173FQ
174FR
175FS
176FT
177FU
178FV
179FW
180FX
181FY
182FZ
183GA
184GB
185GC
186GD
187GE
188GF
189GG
190GH
191GI
192GJ
193GK
194GL
195GM
196GN
197GO
198GP
199GQ
200GR
201GS
202GT
203GU
204GV
205GW
206GX
207GY
208GZ
209HA
210HB
211HC
212HD
213HE
214HF
215HG
216HH
217HI
218HJ
219HK
220HL
221HM
222HN
223HO
224HP
225HQ
226HR
227HS
228HT
229HU
230HV
231HW
232HX
233HY
234HZ
235IA
236IB
237IC
238ID
239IE
240IF
241IG
242IH
243II
244IJ
245IK
246IL
247IM
248IN
249IO
250IP
251IQ
252IR
253IS
254IT
255IU
256IV
257IW
258IX
259IY
260IZ
261JA
262JB
263JC
264JD
265JE
266JF
267JG
268JH
269JI
270JJ
271JK
272JL
273JM
274JN
275JO
276JP
277JQ
278JR
279JS
280JT
281JU
282JV
283JW
284JX
285JY
286JZ
287KA
288KB
289KC
290KD
291KE
292KF
293KG
294KH
295KI
296KJ
297KK
298KL
299KM
300KN
301KO
302KP
303KQ
304KR
305KS
306KT
307KU
308KV
309KW
310KX
311KY
312KZ
313LA
314LB
315LC
316LD
317LE
318LF
319LG
320LH
321LI
322LJ
323LK
324LL
325LM
326LN
327LO
328LP
329LQ
330LR
331LS
332LT
333LU
334LV
335LW
336LX
337LY
338LZ
339MA
340MB
341MC
342MD
343ME
344MF
345MG
346MH
347MI
348MJ
349MK
350MM
351MM
352MN
353MO
354MP
355MQ
356MR
357MS
358MT
359MU
360MV
361MW
362MX
363MY
364MZ
元ネタ
http://d.hatena.ne.jp/dentrok/20100810/1281472075