1

エラーが発生します

System.Runtime.InteropServices.COMException(0x800A03EC)

以下のC#コードでは、ここにワークシートを保存しようとしています。

ただし、同じことがローカル環境でも機能します:Office 2010、Windows 2003

サーバーで動作しない:Office 2003、Windows 2003

コード:

wBook = xCel.Workbooks.Open(ExcelPath);                
wSheet = (Excel.Worksheet)wBook.Worksheets.get_Item(1);                    
wSheet.Copy(Type.Missing, Type.Missing);                    
wSheet = (Excel.Worksheet)wBook.Sheets[1];
wSheet.SaveAs(ExcelCopyPath);   

ここで何が問題になっていますか?保存中に失敗します。他のサーバーでは、保存されますが、マクロが含まれているので、必要ありません。

以下のエラー画像をサンプリングするには

ここに画像の説明を入力してください

4

3 に答える 3

2

サーバーでオフィスオートメーションを使用することはお勧めできません.epplusのような代替手段を検討してください.

Office 2003 には Microsoft.Office.Excel バージョン 11 が必要で、Office 2010 にはバージョン 14 が必要です。あなたのプロジェクトではバージョン14を追加したと思います。したがって、Word 2010では機能しましたが、office 2003のサーバーでは機能しませんでした

遅延バインディングhttp://support.microsoft.com/kb/302902を試してください。それで問題が解決する場合は、 iterop の問題として数えてください。

于 2013-03-19T13:53:55.533 に答える
0

私が書いたベロフコードを使用できます。別のプロジェクトで試しました。そしてそれは働いています

編集 :

おそらく、エラーの原因は、Excel のバージョンがコードで使用したものと異なることです。

Microsoft.Office.Interop.Excel.Application xlApp;
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;

xlApp = new Microsoft.Office.Interop.Excel.Application(); 
xlWorkBook = xlApp.Workbooks.Add(misValue); 
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);    

xlWorkSheet.Cells[1, 1] = "xxx";
xlWorkSheet.Cells[2, 1] = "yyy";


xlWorkSheet.get_Range("A1", "A7").Borders.Weight = 2;
xlWorkSheet.get_Range("A1", "A7").Font.Bold = true;
xlWorkSheet.get_Range("A1", "A7").Font.Size = 13;

xlWorkSheet.get_Range("A2", "A7").Borders.Weight = 2;
xlWorkSheet.get_Range("A2", "A7").Font.Bold = true;
xlWorkSheet.get_Range("A2", "A7").Font.Size = 13;

xlWorkSheet.get_Range("A1", "B9").ColumnWidth = 25;



xlWorkBook.SaveAs(System.Windows.Forms.Application.StartupPath + "\\exceller\\6 Nolu sosyal ve kültürel faaliyetler\\" +
    txtFaaliyetAdi.Text + ".xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue
, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);


xlWorkBook.Close(true, misValue, misValue); 
xlApp.Quit();  
于 2013-03-19T14:15:33.047 に答える
0

これは、IIS が実行されているときのアクセス許可の問題です。この問題があり、この方法で解決しました

私はフォルダに行きました

C:\Windows\ System32\config\SystemProfile

C:\Windows\SysWOW64\config\SystemProfile

保護されたシステム フォルダであり、通常はロックされています。

右クリック -> カード セキュリティ -> 編集 -> 「Autenticadet ユーザー」を追加し、権限を割り当てます。

この時点ですべてが解決されました。まだ問題がある場合は、すべての権限を「Everyone」に付与してみてください。

于 2014-10-24T07:29:18.583 に答える