Microsoft.Office.Interop.Excel
は使ったことがないため方針のみの回答になります。
まず、Microsoft.Office.Interop.Excel
の使用方法を確認する際はMicrosoft.Office.Interop.Excel Namespaceがリファレンスになるので、ここでどのようなオブジェクトがあるかを見るべきかと思います。
該当の列を抽出して、その抽出したカテゴリ別でのExcelの表示を行いたいのですが、抽出してからのシート別出力の仕方が調べても分かりませんでした。
この場合、下記2つの手順を行うことで実装ができます。
0. カテゴリ別に分ける処理を実装
0. カテゴリの種類分、Worksheets.Add(Object, Object, Object, Object) Methodを呼び出し、カテゴリ毎に分けた各列を各ワークシートに書き込む
C#
1private void WriteToWorkBook(WorkBook wb ){
2 foreach (DataRow row in xx.xxxx)
3 {
4 string 抽出1 = "番号='" + row["番号"].ToString() + "'";
5 string categoryName = "hoge"; //TODO:正しいカテゴリ名をどこかから取得する
6 WorkSheet ws = 抽出1が新しいカテゴリなら ?
7 CreateCategorySheet(wb, categoryName) :
8 (Worksheet)workbook.Worksheets[categoryName];
9
10 WriteToWorkSheet(ws);
11 //NOTE: Excelのプロセスが残ったままになることを防ぐため、COMオブジェクトの解放が必要
12 System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
13 }
14}
15
16private void WriteToWorkSheet(WorkSheet ws){
17 //TODO: wsにデータを書き込む処理を作成
18}
19
20private Worksheet CreateCategorySheet(WorkBook wb, string categoryName){
21 wb.Worksheets.Add();
22 //NOTE: wb.Sheets[1]がブックの最初にあるシートなのでCountから1を引く必要はなさそう
23 ws = (Worksheet)wb.Sheets[wb.Sheets.Count()];
24 ws.Name = categoryName;
25 return ws;
26}
また、Excelファイル自体の出力方法が分からない場合は新規にExcelファイルを作成し、データを書き込み保存するを参考にすると良いでしょう。
最後に、そもそもの話になりますが、Excelを操作するためのライブラリを使った方が良いかもしれません。
Excelファイルを C# と VB.NET で読み込む "正しい" 方法に目を通してください。
個人的にはEPPlus
というライブラリもお勧めです。