Microsoft Excel не может получить доступ к файлу в Windows Server 2012
Я запускаю пакет служб SSIS, содержащий скрипт C #, который форматирует файл Excel наWindows Server 2012 R2.
Когда я запускаю пакет, он дает мне эту ошибкуMicrosoft Office Excel не может получить доступ к файлу «\\ FolderPath \ FilePath»
Я видел этот вопросMicrosoft Office Excel не может получить доступ к файлу 'c: \ inetpub \ wwwroot \ Timesheet \ App_Data \ Template.xlsx' и проверил мое разрешение, и они верны.
Я тоже пытался добавитьДвойные кавычки вокруг окончательного FilePath, как этоsFile = "\"" + sFile + "\"";
но это выводит ошибкуMicrosoft Excel не может получить доступ к файлу '"\ FolderPath \ FilePath" это удаление одного \ я действительно не понимаю, почему.
Ниже приведен оригинальный код
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Data.SqlClient;
using Excel = Microsoft.Office.Interop.Excel;
using System.IO;
using System.Text;
using System.Diagnostics;
using System.Reflection;
public int Main()
{
StringBuilder sb = new StringBuilder();
string LogFilePath = "\\\\LogFilePath";
string strExcelDataOutPut = "\\\\FolderPath";
string sPath = "\\filePath";
try {
FormatFile(strExcelDataOutPut,sPath);
} catch (Exception ex) {
using (System.IO.StreamWriter outfile = new System.IO.StreamWriter(LogFilePath))
{
sb.AppendLine("Error Occured ..Please see the error Message :" + ex.Message);
outfile.Write(sb.ToString());
}
}
}
public void FormatFile(string strExcelDataOutPut, string sPath)
{
Microsoft.Office.Interop.Excel.Application objExcelApp = new Excel.Application();
Microsoft.Office.Interop.Excel.Workbook objExcelWbk = default(Excel.Workbook);
Microsoft.Office.Interop.Excel.Worksheet objWrksheet = default(Excel.Worksheet);
object missing = Missing.Value;
Excel.Range crange1;
string sFile = string.Empty;
string sWorkSheet = string.Empty;
//--Month in English/French
string sMonthYear = string.Empty;
try
{
objExcelApp.DisplayAlerts = false;
objExcelApp.Visible = false;
sFile = strExcelDataOutPut + sPath;
//--Check if the file exists ---------------------------------------------------------
if (System.IO.File.Exists(sFile))
{
sWorkSheet = "Sheet1";
}
objExcelWbk = objExcelApp.Workbooks.Open(sFile.Trim(), missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, true);
objWrksheet = (Excel.Worksheet)objExcelWbk.Worksheets[sWorkSheet];
((Microsoft.Office.Interop.Excel._Worksheet)objWrksheet).Activate();
//--Format
sMonthYear = "Report as at: " + DateTime.Today.ToString("MMMM") + " " + DateTime.Today.Day.ToString() + ", " + DateTime.Today.Year.ToString();
objWrksheet.PageSetup.LeftHeader = "&8&F";
//objWrksheet.PageSetup.CenterFooter = @"&12&""Arial,Bold" + sMonthYear;
objWrksheet.PageSetup.CenterFooter = " " + sMonthYear;
crange1 = (Excel.Range)objWrksheet.Cells[1, 1];
crange1.Select();
//objExcelWbk.SaveAs(sFile, missing, missing, missing, missing, missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, missing, missing, missing, missing, missing);
//objExcelWbk.Close(true, missing, missing);
objExcelWbk.Save();
objExcelWbk.Close(true, sFile, missing);
objExcelApp.Quit();
}
catch
{
throw;
}
finally
{
objWrksheet = null;
objExcelWbk = null;
objExcelApp = null;
System.GC.Collect();
}
}