Когда я передаю значение из метода OpenFilePicker () обратно в метод нажатия кнопки, я могу использовать строку отладки и убедиться, что значение не равно нулю.
Однако, когда я передаю его методу GetCellValue (), возникает исключение FileNotFound. Использование здесь команды отладки также показывает, что значение не равно нулю, и возвращает правильный путь к файлу «C: \ Test.xlsx».
Попытка изменения прав доступа к файлам для RWX для всех, попытка разных папок. Кажется, все разрешения и папки имеют одинаковую проблему.
public async void FileSelectButton_ClickAsync(object sender, RoutedEventArgs e)
{
string filePath = await openFilePicker();
//Debug.WriteLine("result:: " + filePath);
GetCellValue(filePath, "Sheet1", "A1");
}
public async Task<string> openFilePicker()
{
var archerReportPicker = new
Windows.Storage.Pickers.FileOpenPicker();
archerReportPicker.ViewMode =
Windows.Storage.Pickers.PickerViewMode.Thumbnail;
archerReportPicker.SuggestedStartLocation =
Windows.Storage.Pickers.PickerLocationId.Downloads;
archerReportPicker.FileTypeFilter.Add(".xlsx");
archerReportPicker.FileTypeFilter.Add(".xls"); // Default extensions
Windows.Storage.StorageFile archerReport = await archerReportPicker.PickSingleFileAsync(); //Get file
if (archerReport != null)
{
// Application now has read/write access to the picked file
this.fileTextBox.Text = archerReport.Name; // Load it up and throw the data in the textbox.
var filePath = archerReport.Path;
return filePath;
}
else
{
this.fileTextBox.Text = "";
return null;
}
}
public static string GetCellValue(string fileName, string sheetName, string addressName)
{
string value = null;
// Open the spreadsheet document for read-only access.
using (SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, false)) //Line where exception is thrown
{...}
Выдает исключение System.IO.FileNotFound вместо открытия допустимого пути к файлу.
Эта проблема также возникает, когда filePath или fileName определены с помощью const string '@c:\test.xlsx'