|
分類:[.NET 全般]
環境はc# windows フォームアプリケーション.Net Frameworkです
宜しくお願い致します
エクセルの商品と言うブックを開き、A列を上から見て行って
検索する文字と一致する行のB列とC列のデータを配列に入れたいと
思っています
調べながらコードを書いたのですが using (ExcelPackage....の所で
CS1674 暗黙的に 'System.IDisposable' に変換できる必要があります
とでるのですが、よくわかりませんので教えて頂けないでしょうか
宜しくお願い致します
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;
using OfficeOpenXml;
namespace WindowsFormsApp720
{
public partial class Form1 : Form
{
static void Main()
{
string filePath = @"c:\DATA1\商品.xlsx";
string searchString = "ペン";
string[,] matchingData = SearchInExcel(filePath, searchString);
Console.WriteLine("合致する結果:");
int rowCount = matchingData.GetLength(0);
for (int row = 0; row < rowCount; row++)
{
string bValue = matchingData[row, 0];
string cValue = matchingData[row, 1];
Console.WriteLine("B列の値: " + bValue);
Console.WriteLine("C列の値: " + cValue);
}
}
static string[,] SearchInExcel(string filePath, string searchString)
{
List<string[]> matchingData = new List<string[]>();
using (ExcelPackage Package = new ExcelPackage(new FileInfo(filePath)))
{
ExcelWorksheet worksheet = Package.Workbook.Worksheets[0];
int rowCount = worksheet.Dimension.Rows;
int columnCount = 2;
for (int row = 1; row <= rowCount; row++)
{
string cellValue = worksheet.Cells[row, 1].Value?.ToString();
if (cellValue != null && cellValue.Equals(searchString, StringComparison.OrdinalIgnoreCase))
{
string[] rowData = new string[columnCount];
rowData[0] = worksheet.Cells[row, 2].Value?.ToString();
rowData[1] = worksheet.Cells[row, 3].Value?.ToString();
matchingData.Add(rowData);
}
}
}
int matchingRowCount = matchingData.Count;
string[,] result = new string[matchingRowCount, 2];
for (int i = 0; i < matchingRowCount; i++)
{
result[i, 0] = matchingData[i][0];
result[i, 1] = matchingData[i][1];
}
return result;
}
}
}
|