[com] Windows Server 2008 x64 위에 Excel 2007 자동화


Answers

또한 소스에 명시된 것처럼 Desktop 폴더에 대한 올바른 권한을 설정해야합니다. 이것은 Windows 2008-64bits 및 Office 2010 32 비트에서 저에게 효과적이었습니다.

  1. 64 비트 Windows의 경우 "C : \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop"또는 32 비트 Windows의 경우 "C : \ Windows \ System32 \ config \ systemprofile \ Desktop"

  2. 생성 된 폴더에 대해 "Network Services (Service Réseau)"사용자에게 다음 권한을 할당합니다.

읽기 및 실행, 폴더 내용 나열, 읽기

남자.

Question

필자는 Office 제품 UI를 자동화하는 것이 지원되지 않는다는 Microsoft의 지원 자료를 잘 알고 있습니다. Windows Server 2008 x64 및 Excel 2007 에서 해당 진술을 시행하는 것으로 보입니다.

NT 서비스 (로컬 시스템 계정) OnStart 메서드에서 다음 코드를 실행하고 있습니다. 콘솔 응용 프로그램에서 동일한 코드를 실행할 때 Excel 자동화가 작동하는 것뿐입니다.

제공된 코드는 두 부분으로 구성됩니다. 첫 번째 부분에서는 Excel을 시작하고 새 작업 표를 만들고 지정된 파일 이름으로 저장합니다. 두 번째 부분에서는 Excel의 새 인스턴스를 시작하고 지정된 파일을 엽니 다. 열린 예외는이 예외에서 끝납니다.

서비스를 시작할 수 없습니다. System.Runtime.InteropServices.COMException (0x800A03EC) : Microsoft Office Excel에서 'c : \ temp \ test.xls'파일에 액세스 할 수 없습니다. 몇 가지 이유가있을 수 있습니다.

• 파일 이름이나 경로가 존재하지 않습니다. 다른 파일에서 파일을 사용 중입니다. • 저장하려는 통합 문서의 이름이 현재 열려있는 통합 문서와 동일해야합니다.

자동화 된 Excel이 파일을 시작하고 디스크에 쓸 수있는 이유는 무엇입니까?하지만 기존 파일을 열 때 "그냥"묻는다면 실패합니다.

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
// launch excel and create/save a new work book
Microsoft.Office.Interop.Excel.ApplicationClass excel = new       Microsoft.Office.Interop.Excel.ApplicationClass();
excel.UserLibraryPath, excel.Interactive));
//            
string filename = "c:\\temp\\test.xls";
if(System.IO.File.Exists(filename)) System.IO.File.Delete(filename);
//
excel.Workbooks.Add(System.Reflection.Missing.Value);
excel.Save(filename);
excel.Quit();
excel = null;
// lauch new instance of excel and open saved file
excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
try
{
    Microsoft.Office.Interop.Excel.Workbook book = excel.Workbooks.Open(filename,
                System.Reflection.Missing.Value,
                System.Reflection.Missing.Value,
                System.Reflection.Missing.Value,
                System.Reflection.Missing.Value,
                System.Reflection.Missing.Value,
                true,
                System.Reflection.Missing.Value,
                System.Reflection.Missing.Value,
                false,
                false,
                System.Reflection.Missing.Value,
                false,
                System.Reflection.Missing.Value,
                System.Reflection.Missing.Value);
     book.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
      book = null;
  }
  finally
  {
      excel.Quit();
      excel = null;
  }
  //
  GC.Collect();



Windows Server 2007 64 비트에서 Excel을 작동 시키려면 작업해야하는 많은 오류가 있습니다. 이틀 동안이 작업을 한 후에 운동 한 단계를 보십시오!




Related