回答編集履歴

3

コード修正

2019/08/27 05:09

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -30,7 +30,13 @@
30
30
 
31
31
  string categoryName = "hoge"; //TODO:正しいカテゴリ名をどこかから取得する
32
32
 
33
+ WorkSheet ws = 抽出1が新しいカテゴリなら ?
34
+
33
- WorkSheet ws = getCategorySheet(wb, categoryName);
35
+ CreateCategorySheet(wb, categoryName) :
36
+
37
+ (Worksheet)workbook.Worksheets[categoryName];
38
+
39
+
34
40
 
35
41
  WriteToWorkSheet(ws);
36
42
 
@@ -52,25 +58,15 @@
52
58
 
53
59
 
54
60
 
55
- private Worksheet GetCategorySheet(WorkBook wb, string categoryName){
61
+ private Worksheet CreateCategorySheet(WorkBook wb, string categoryName){
56
62
 
57
- WorkSheet ws;
63
+ wb.Worksheets.Add();
58
64
 
59
- if(抽出1が新しいカテゴリなら){
65
+ //NOTE: wb.Sheets[1]ブックの最初にあるシートのでCountか1を引く必要はなさそう
60
66
 
61
- wb.Worksheets.Add();
67
+ ws = (Worksheet)wb.Sheets[wb.Sheets.Count()];
62
68
 
63
- //NOTE: wb.Sheets[1]がブックの最初にあるシートなのでCountから1を引く必要はなさそう
64
-
65
- ws = (Worksheet)wb.Sheets[wb.Sheets.Count()];
66
-
67
- ws.Name = categoryName;
69
+ ws.Name = categoryName;
68
-
69
- }else{
70
-
71
- ws = (Worksheet)workbook.Worksheets[categoryName];
72
-
73
- }
74
70
 
75
71
  return ws;
76
72
 

2

コードの修正&名前空間を書くのが面倒なので省略

2019/08/27 05:08

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  ```C#
22
22
 
23
- public void WriteToWorkBook(WorkBook wb ){
23
+ private void WriteToWorkBook(WorkBook wb ){
24
24
 
25
25
  foreach (DataRow row in xx.xxxx)
26
26
 
@@ -30,33 +30,49 @@
30
30
 
31
31
  string categoryName = "hoge"; //TODO:正しいカテゴリ名をどこかから取得する
32
32
 
33
- WorkSheet ws;
33
+ WorkSheet ws = getCategorySheet(wb, categoryName);
34
34
 
35
-
36
-
37
- if(抽出1が新しいカテゴリなら){
38
-
39
- wb.Worksheets.Add();
35
+ WriteToWorkSheet(ws);
40
-
41
- //NOTE: wb.Sheets[1]がブックの最初にあるシートなのでCountから1を引く必要はなさそう
42
-
43
- ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Sheets[wb.Sheets.Count()];
44
-
45
- ws.Name = categoryName;
46
-
47
- }else{
48
-
49
- ws = (Excel.Worksheet)workbook.Worksheets[categoryName];
50
-
51
- }
52
-
53
- //TODO: wsにデータを書き込む処理を作成
54
36
 
55
37
  //NOTE: Excelのプロセスが残ったままになることを防ぐため、COMオブジェクトの解放が必要
56
38
 
57
39
  System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
58
40
 
59
41
  }
42
+
43
+ }
44
+
45
+
46
+
47
+ private void WriteToWorkSheet(WorkSheet ws){
48
+
49
+ //TODO: wsにデータを書き込む処理を作成
50
+
51
+ }
52
+
53
+
54
+
55
+ private Worksheet GetCategorySheet(WorkBook wb, string categoryName){
56
+
57
+ WorkSheet ws;
58
+
59
+ if(抽出1が新しいカテゴリなら){
60
+
61
+ wb.Worksheets.Add();
62
+
63
+ //NOTE: wb.Sheets[1]がブックの最初にあるシートなのでCountから1を引く必要はなさそう
64
+
65
+ ws = (Worksheet)wb.Sheets[wb.Sheets.Count()];
66
+
67
+ ws.Name = categoryName;
68
+
69
+ }else{
70
+
71
+ ws = (Worksheet)workbook.Worksheets[categoryName];
72
+
73
+ }
74
+
75
+ return ws;
60
76
 
61
77
  }
62
78
 

1

コメントの修正

2019/08/27 05:06

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  string 抽出1 = "番号='" + row["番号"].ToString() + "'";
30
30
 
31
- string カテゴリ名 = "hoge"; //TODO:正しいカテゴリ名をどこかから取得する
31
+ string categoryName = "hoge"; //TODO:正しいカテゴリ名をどこかから取得する
32
32
 
33
33
  WorkSheet ws;
34
34
 
@@ -38,15 +38,15 @@
38
38
 
39
39
  wb.Worksheets.Add();
40
40
 
41
- //NOTE: Excelシートは1スタートなので-1をする必要はなさそう
41
+ //NOTE: wb.Sheets[1]がブックの最初にあるシートなのでCountから1を引く必要はなさそう
42
42
 
43
43
  ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Sheets[wb.Sheets.Count()];
44
44
 
45
- ws.Name = カテゴリ名;
45
+ ws.Name = categoryName;
46
46
 
47
47
  }else{
48
48
 
49
- ws = (Excel.Worksheet)workbook.Worksheets[カテゴリ名];
49
+ ws = (Excel.Worksheet)workbook.Worksheets[categoryName];
50
50
 
51
51
  }
52
52