Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#WPF应用程序中打开并读取Excel文件_C#_Wpf_Excel - Fatal编程技术网

在C#WPF应用程序中打开并读取Excel文件

在C#WPF应用程序中打开并读取Excel文件,c#,wpf,excel,C#,Wpf,Excel,我试图打开本地计算机上的Excel文件,并从中取出一些值。这些值是位于不同单元格中的字符串和数字的混合。Excel文件将使用openFileDialog打开。我正在使用C#开发一个桌面应用程序(WPF)。这是我正在实施的代码: Excel.Application excelApp = new Excel.Application(); string workbookPath = "C:/Users/b_prashanth/Documents/26. Workload Mo

我试图打开本地计算机上的Excel文件,并从中取出一些值。这些值是位于不同单元格中的字符串和数字的混合。Excel文件将使用
openFileDialog
打开。我正在使用C#开发一个桌面应用程序(WPF)。这是我正在实施的代码:

     Excel.Application excelApp = new Excel.Application();
        string workbookPath = "C:/Users/b_prashanth/Documents/26. Workload Modeling generic template.xlsx";
        Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath);
        Excel.Sheets excelSheets = excelWorkbook.Worksheets;
        string currentSheet = "Sheet1";
        Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelSheets.get_Item(currentSheet);
        Excel.Range excelCell =
    (Excel.Range)excelWorksheet.get_Range("A1", "A1");

我认为,OpenXMLSDK应该对您有所帮助。

它可以通过nuget-DocumentFormat.OpenXML获得,
你可以找到所有的类和算法,你需要什么?你面临的问题是什么

Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
dlg.DefaultExt = ".xlsx";
bool? result = dlg.ShowDialog();

if (result != true) return;

string workbookPath = dlg.FileName;

Excel.Application excelApp = new Excel.Application();
Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath);
Excel.Worksheet sheet = excelWorkbook.Sheets["Sheet1"] as Excel.Worksheet; 

if (sheet == null) return;

Excel.Range range = sheet.get_Range("A1", Missing.Value)

var yourValue = range.Text;

与需要在计算机上安装Office的Office interop不同,您可以使用ADO驱动程序像访问数据库一样访问Excel工作表


这已经在这里被记录了很多次,而且非常容易

请添加一个您尝试过的示例,否则此操作将被关闭。将运行应用程序的客户端是否安装了excel?是的,客户端中安装了excel。我尝试了此操作。我在“Excel.Workbench sheet=ExcelWorkbench.Sheets[“Sheet1”]作为Excel.Workbench”的行中得到一个错误,它说“WpfApplication2.exe中发生了“System.Runtime.InteropServices.COMException”类型的未处理异常”。。。此外,“missing.value”不可用。相反,我使用的是“Type.missing”。不确定问题出在哪里,因为此代码和您的代码都在我的机器上工作。