Я пишу метод для возврата значения ячейки листа Excel при передаче имени файла, имени листа и адреса ячейки.Рекурсивно вызвать метод для получения значений листа 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' и что не так с его использованием? –
Я просто хочу получить все значения из excel вместо одной строки. Я не знаю, как это сделать. – devan