Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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#中无法保存为excel文件,否则会出现只读错误?_C#_.net_Excel_Visual Studio_Interop - Fatal编程技术网

在c#中无法保存为excel文件,否则会出现只读错误?

在c#中无法保存为excel文件,否则会出现只读错误?,c#,.net,excel,visual-studio,interop,C#,.net,Excel,Visual Studio,Interop,我试图打开一个excel文件,并将信息从该文件传输到另一个excel文件,即目标excel文件。唯一的问题是储蓄。我打开的目标文件不是只读的,但当我尝试另存为时,它会说它是只读的。我确保没有额外的excel任务在后台运行,它仍然会发生。当我使用save时,它可以工作,但是它不能可靠地将目标文件保存在同一位置。我还没有确定它采用什么模式,但我需要能够每次在相同的位置覆盖目标文件,因为这将附加到已经存在的旧excel文件。无论我对saveas语句做了什么,它总是将我带回只读参数 编辑-我已尝试使用.

我试图打开一个excel文件,并将信息从该文件传输到另一个excel文件,即目标excel文件。唯一的问题是储蓄。我打开的目标文件不是只读的,但当我尝试另存为时,它会说它是只读的。我确保没有额外的excel任务在后台运行,它仍然会发生。当我使用save时,它可以工作,但是它不能可靠地将目标文件保存在同一位置。我还没有确定它采用什么模式,但我需要能够每次在相同的位置覆盖目标文件,因为这将附加到已经存在的旧excel文件。无论我对saveas语句做了什么,它总是将我带回只读参数


编辑-我已尝试使用.Save()选项并关闭警报。但它不会忽略覆盖目标文件的警报,而是将其粘贴到Documents文件夹中。是否有人对常规Save()方法的行为有经验?

是否右键单击excel文件并检查其属性以确保未设置“只读”属性?

rangeDestination.Cells[1,1]=(字符串)(range.Cells[14,3]作为excel.range.Text.ToString();
textBox1.Text=fileNameDestination&“.xls”

它没有那个只读属性集。测试一是Excel 2013中的空白工作簿。当我确保以非只读方式打开它时,它只是在错误消息中不断地说它是只读的。我不确定我是否遵循了这个答案。我的答案很差。您正在保存一个字符串。这是个问题。您应该使用if.enableevents=false然后.enableevents=true打开工作簿,使用字符串内容然后添加扩展名。我对您所说的感到非常困惑。我将字符串信息从一个excel文件中的单元格拉入另一个文件中的单元格。fileNameDestination已具有完整路径,包括.xls扩展名。我确实试着设置enableevents,但它没有任何我能看到的效果。当我打开目标excel文件时,它告诉我它必须以只读方式打开,因为其他人正在修改它。我如何停止这样做,以便能够正确地保存?
    private void button1_Click(object sender, EventArgs e)
    {
        xlApp = new Excel.Application();
        xlWorkBook = xlApp.Workbooks.Open(fileName, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
        range = xlWorkSheet.UsedRange;

        xlAppDestination = new Excel.Application();
        xlAppDestination.DisplayAlerts = false;
        xlWorkBookDestination = xlAppDestination.Workbooks.Open(fileNameDestination, 0, false, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
        xlWorkSheetDestination = (Excel.Worksheet)xlWorkBookDestination.Worksheets.get_Item(1);
        rangeDestination = xlWorkSheetDestination.UsedRange;

        rangeDestination.Cells[1, 1] = (string)(range.Cells[14, 3] as Excel.Range).Text.ToString();
        textBox1.Text = fileNameDestination;

        //xlAppDestination.ActiveWorkbook.Save();
        xlWorkBookDestination.SaveAs(fileNameDestination);
        xlWorkBookDestination.Close(0);
        xlWorkBook.Close(0);


        xlCleanup();
    }