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