使用c#excel互操作选择范围

使用c#excel互操作选择范围,c#,excel,com-interop,excel-interop,C#,Excel,Com Interop,Excel Interop,我无法在C#中使用excel互操作选择范围。请让我知道我做错了什么。我对excel interop非常陌生 static void Main(string[] args) { Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open("D:\\s1.xlsx"); Excel.Range xl

我无法在C#中使用excel互操作选择范围。请让我知道我做错了什么。我对excel interop非常陌生

   static void Main(string[] args)
    {
        Excel.Application xlApp = new Excel.Application();
        Excel.Workbook xlWorkbook = xlApp.Workbooks.Open("D:\\s1.xlsx");

        Excel.Range xlTestRange;
        Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[2];

        xlTestRange = xlWorksheet.UsedRange;
        xlTestRange.Select();
        xlWorkbook.Save();
        xlWorkbook.Close();
        xlApp.UserControl = true;
        xlApp.Quit();


    }

以下代码在LINQPad中为我工作:

var xlApp = new Excel.Application();
var xlWorkbook = xlApp.Workbooks.Open(@"path-to-excel-file");
var xlWorksheet = (Excel.Worksheet)xlWorkbook.Sheets[1];

var xlTestRange = xlWorksheet.UsedRange;
xlTestRange.Select();
xlWorkbook.Save();

xlWorkbook.Close();
xlApp.Quit();

以下代码在LINQPad中为我工作:

var xlApp = new Excel.Application();
var xlWorkbook = xlApp.Workbooks.Open(@"path-to-excel-file");
var xlWorksheet = (Excel.Worksheet)xlWorkbook.Sheets[1];

var xlTestRange = xlWorksheet.UsedRange;
xlTestRange.Select();
xlWorkbook.Save();

xlWorkbook.Close();
xlApp.Quit();

如果关闭工作簿并退出应用程序,您如何知道选择不起作用?在代码运行时粘贴此处时,我漏掉了保存行。它会导致以下错误:mscorlib.dll中出现“System.Runtime.InteropServices.COMException”类型的未经处理的异常。其他信息:Select方法如果要调用
Quit
,则不需要设置
UserControl
。我在LINQPad中运行了这段代码,它在我的测试电子表格中运行良好。请注意,
Sheets[]
从1开始编制索引。仅供参考,我复制了您的代码并运行得很好。第二页中偶然出现了什么特殊情况?如果您正在关闭工作簿并退出应用程序,您如何知道选择不起作用?我在粘贴此处时漏掉了保存行。当代码正在运行时,它会导致以下错误:在中发生“System.Runtime.InteropServices.COMException”类型的未处理异常mscorlib.dll其他信息:选择范围类的方法失败如果要调用
Quit
,则无需设置
UserControl
。我在LINQPad中运行了这段代码,它在我的测试电子表格中运行良好。请注意,
Sheets[]
从1开始编制索引。仅供参考,我复制了您的代码并运行得很好。第二页中有什么特别的地方吗?您上面的代码在C#::上不起作用(但是当我运行下面的代码时,它在Excel上运行得很好。应用程序xlApp=new Excel.Application();Excel.工作簿xl工作簿=xlApp.Workbooks.Open(“D:\\s1.xlsx”);Excel.Range xlTestRange;Excel._工作表xlWorksheet=xlWorkbook.Sheets[2];xlWorksheet.Select();xlTestRange=xlWorksheet.UsedRange;xlTestRange.Select();xlWorkbook.Save();xlWorkbook.Close();xlApp.Quit();我认为这是缺少的一行->xlWorksheet.Select();啊-它对我有效,因为我使用的是唯一的工作表。上面的代码在C#::上不起作用(但是当我运行下面的代码时,它在Excel.Application xlApp=new Excel.Application();Excel.Workbook xlApp=xlApp.Workbooks.Open上运行得很好(“D:\\s1.xlsx”);Excel.Range xlTestRange;Excel.\u工作表xlWorksheet=xlWorkbook.Sheets[2];xlWorksheet.Select();xlTestRange=xlWorksheet.UsedRange;xlTestRange.Select();xlWorkbook.Save();xlWorkbook.Close();xlApp.Quit();我想这是缺少的一行->xlWorksheet.Select();啊-它对我有效,因为我使用的是唯一的工作表。