1

私はこのコードを持っています:

Microsoft.Office.Interop.Excel.Application xla = new Microsoft.Office.Interop.Excel.Application();
xla.Visible = false;
Workbook wb = xla.Workbooks.Add(XlSheetType.xlWorksheet);
Worksheet ws = (Worksheet)xla.ActiveSheet;
ws.Name = "Serial";
int i = 1;
foreach (DataRow comp in dsView.Tables[0].Rows)
{
    ws.Cells[i, 1] = "'" + comp[0].ToString();
    ws.Cells[i, 2] = "'" + comp[1].ToString();
    ws.Cells[i, 3] = "'" + comp[2].ToString();
    i++;
}
if (File.Exists(@"d:\DDD.xlsx"))
    File.Delete(@"d:\DDD.xlsx");
xla.Save(@"d:\DDD.xlsx");    ---->>>>  on this line i get the error

エラー:

HRESULTからの例外:0x800A03EC

私はOffice2012でC#WinFormsに取り組んでい

4

2 に答える 2

1

問題は、変数 xla がワークブックではなく Excel アプリケーションであることです。ブックを保存します。

それで

xla.Save(@"d:\DDD.xlsx");    ---->>>>  on this line i get the error

する必要があります

wb.SaveAs(@"d:\DDD.xlsx", System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value,
                System.Reflection.Missing.Value,System.Reflection.Missing.Value,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,System.Reflection.Missing.Value,
                System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value);
于 2012-12-13T16:12:58.363 に答える
0

Excel.Application.Save().NET 4 をターゲットにして Visual Studio 2010 と Excel 2010 の相互運用機能 (Office 14) を実行すると、ファイルを保存する場所を選択するダイアログが表示されます。そのダイアログで [キャンセル] をクリックすると、COM 例外が発生します。しかし、[保存] をクリックすると奇妙な結果が得られます。有効なファイル パスと名前を のようなパラメーターとして指定するとExcel.Application.Save(@"C:\blah.xlsx")、最終的に 2 つのファイルが保存されます。1 つ目は Sheet1.xlsx という名前で、ダイアログでその名前を選択しなかったにもかかわらず、期待どおりの内容が含まれています。もう 1 つは blah.xlsx という名前で (私のファイル名パラメーターに従って)、Excel で正しく開きません。パラメータとしてファイル名を指定せずに呼び出すとExcel.Application.Save()、ダイアログで選択した名前とパスで有効なファイルが保存されますが、「RESUME.XLW」ファイルも取得されます。そのため、Application.Saveこの方法は、使用するのに適していない可能性があります。代わりに、次のようなことを行うことができます。これは期待どおりに機能します。

using System;
using Excel = Microsoft.Office.Interop.Excel;
namespace WindowsFormsApplication2
{
    static class Program
    {
        static void Main()
        {
            Excel.Application xlApp = new Excel.Application();
            Excel.Workbook book = xlApp.Workbooks.Add(Excel.XlSheetType.xlWorksheet);
            Excel.Worksheet sheet = book.ActiveSheet;
            sheet.Name = "Booya";
            Excel.Range range = sheet.Cells[1, 1];
            range.Value = "This is some text";
            book.SaveAs(@"C:\blah.xlsx");
        }
    }
}
于 2012-12-13T18:14:45.850 に答える