0

Excelファイルを変換するツールを作成しました。ユーザーが Excel ファイルを変換すると、コードは最初に Excel ファイルを作成します。私のシステム (Excel 2007) では、問題なく動作しています。Excel 98 を搭載したシステムにプログラムをインストールすると、例外がスローされます。私が最初に受け取った例外は別のものでしたが、HResult エラーもありました。「SaveAs」を「SaveCopyAs」に変更することでこれを修正しました。その後、修正されました!また、Excel 98 がインストールされている他のシステムでも、別の HResult エラーが発生しました。ここでの問題は何ですか:

            _savePath = sfd.FileName;

            MessageBox.Show("GOOD1");
            Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();

            MessageBox.Show("GOOD2");
            // The exception is here on the workbook
            // HResult 8x00010105 (COMException)
            Microsoft.Office.Interop.Excel.Workbook workbook = excelApp.Workbooks.Add(Missing.Value);

            MessageBox.Show("GOOD3");
            workbook.SaveCopyAs(_savePath);

            MessageBox.Show("GOOD4");
            lblSavePath.Text = _savePath;
            workbook.Close(false, _savePath, Type.Missing);
            excelApp.Quit();

誰かがこの問題で私を助けてくれることを願っています。

ありがとう、

ジェイミー

4

2 に答える 2

1

あなたは試すことができます:

_savePath = sfd.FileName;
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
MessageBox.Show("GOOD2");
excelApp.SheetsInNewWorkbook = 1;      
try
{
   // Must be surrounded by try catch to work.
   excelApp.Visible = true;
}
catch (Exception e)
{
    Console.WriteLine("-------Error hiding the application-------");
    Console.WriteLine("Occured error might be: " + e.StackTrace);
} 
Microsoft.Office.Interop.Excel.Workbook workbook
workbook = excelApp.Workbooks.Open("your excel file", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); // if working with another excel
excelApp.Workbooks.Add();
MessageBox.Show("GOOD3");
Excel.Worksheet sheetC = excelApp.Sheets.get_Item(1);   
sheetC.Name = "name-of-sheet";

workbook.SaveCopyAs(_savePath); // SaveAs should work actually.
workbook.Close();
excelApp.Quit(); 

私はあなたの解決策を取り、正しくないMissing.Value部分を修正しました。さらに、 workbook.Closeにパラメーターを与える必要はありません。ここにある解決策: C# で Excel ワークブックを作成した後、シートを 1 つだけ追加したい

于 2013-06-12T09:10:30.183 に答える
0

行なしでコードを試してみてくださいexcelApp.Quit();

この関数は、 excelAppオブジェクトを再度excelApp.Quit();使用しない場合にのみ使用してください。

于 2013-09-19T17:50:19.993 に答える