filename 、 sheetname 、および cell address を渡すと、Excel シートのセル値を返すメソッドを作成します。
public static string GetCellValue(string fileName, string sheetName, string addressName)
{
string value = null;
using (SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, false))
{
WorkbookPart wbPart = document.WorkbookPart;
Where(s => s.Name == sheetName).FirstOrDefault();
if (theSheet == null)
{
throw new ArgumentException("sheetName");
}
WorksheetPart wsPart =
(WorksheetPart)(wbPart.GetPartById(theSheet.Id));
Cell theCell = wsPart.Worksheet.Descendants<Cell>().
Where(c => c.CellReference == addressName).FirstOrDefault();
if (theCell != null)
{
value = theCell.InnerText;
if (theCell.DataType != null)
{
switch (theCell.DataType.Value)
{
case CellValues.SharedString:
.
var stringTable =
wbPart.GetPartsOfType<SharedStringTablePart>()
.FirstOrDefault();
if (stringTable != null)
{
value =
stringTable.SharedStringTable
.ElementAt(int.Parse(value)).InnerText;
}
break;
case CellValues.Boolean:
switch (value)
{
case "0":
value = "FALSE";
break;
default:
value = "TRUE";
break;
}
break;
}
}
}
}
return value;
}
上記のメソッドを呼び出す方法は次のとおりです。
private void button1_Click(object sender, EventArgs e)
{
const string fileName = @"C:\Users\dkumarage\Desktop\Book1.xlsx";
string value = GetCellValue(fileName, "Sheet1", "A1");
textBox1.Text = value;
}
この方法では、1 つのセル値しか取得できません。このメソッドを再帰的に呼び出して、すべてのセル値を取得するにはどうすればよいですか。私を助けてください。(ここでは範囲を渡すことができません。範囲がわからないためです。代わりに、while(行の終わりではありません)を使用する必要があります)
ありがとうございました