Попытка выяснить проблему
В обычных случаях предоставленный вами код будет работать отлично.Он может столкнуться с некоторой проблемой, если приложение Excel показало окно сообщения, нужны разрешения для включения редактирования, существуют проблемы с разрешениями для доступа к другим рабочим листам, поскольку они защищены ...
Прежде всего, откройтеExcel вручную и убедитесь, что вы можете получить доступ ко всем рабочим листам и выполнить операции сохранения вручную.Если вы не столкнулись с какой-либо проблемой, то при использовании библиотеки Interop.Excel не следует показывать в Excel окна сообщений или другие рекламные акции.
Кроме того, убедитесь, что Csv еще не существует в пути назначения.
Попробуйте использовать аналогичный код:
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
excelApp.Visible = false;
excelApp.DisplayAlerts = false;
Microsoft.Office.Interop.Excel.Workbook workbook = excelApp.Workbooks.Open(@"D:\Book1.xlsx");
workbook.DoNotPromptForConvert = true;
workbook.CheckCompatibility = false;
foreach (Microsoft.Office.Interop.Excel.Worksheet sht in workbook.Worksheets)
{
sht.Select();
System.Diagnostics.Debug.WriteLine(sht.Name.ToString());
if (System.IO.File.Exists(string.Format("{0}{1}.csv", @"D:\", sht.Name)))
{
System.IO.File.Delete(string.Format("{0}{1}.csv", @"D:\", sht.Name);
}
workbook.SaveAs(string.Format("{0}{1}.csv", @"D:\", sht.Name),
Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange);
}
//workbook.Close(false);
workbook.Close(false, Type.Missing, Type.Missing);
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
Я проверил следующеекод и он успешно преобразовал все рабочие листы.