Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms 使用C#和Excel互操作_Winforms_C# - Fatal编程技术网

Winforms 使用C#和Excel互操作

Winforms 使用C#和Excel互操作,winforms,c#,Winforms,C#,我有以下代码: 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"; i

我有以下代码:

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


我使用C Office 2012 O/P>> P >你的问题是变量XLA是Excel应用程序而不是工作簿。您想保存工作簿

所以

应该是

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);

<>你的问题是变量XLA是Excel应用程序而不是工作簿。您想保存工作簿

所以

应该是

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);

当我使用Visual Studio 2010和Excel 2010 interop(Office 14)以.NET 4为目标运行
Excel.Application.Save()
时,它会显示一个对话框来选择保存文件的位置。单击该对话框上的“取消”将导致COM异常。但单击“保存”会产生奇怪的结果:当我提供一个有效的文件路径和名称作为参数时,比如
Excel.Application.Save(@“C:\blah.xlsx”)
,我最终保存了两个文件。第一个名为Sheet1.xlsx,包含我期望的内容,尽管我在对话框中没有选择该名称。另一个名为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");
        }
    }
}

当我使用Visual Studio 2010和Excel 2010 interop(Office 14)以.NET 4为目标运行
Excel.Application.Save()
时,它会显示一个对话框来选择保存文件的位置。单击该对话框上的“取消”将导致COM异常。但单击“保存”会产生奇怪的结果:当我提供一个有效的文件路径和名称作为参数时,比如
Excel.Application.Save(@“C:\blah.xlsx”)
,我最终保存了两个文件。第一个名为Sheet1.xlsx,包含我期望的内容,尽管我在对话框中没有选择该名称。另一个名为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");
        }
    }
}

请提供完整的堆栈跟踪。可能文件名或路径不存在,或者该文件正被其他程序使用。请尝试使用“另存为”而不是“保存”。您/您的应用程序是否具有写入此文件夹的所有权限?第一步运行代码,直到此时,然后尝试手动保存。请提供完整的堆栈跟踪。可能文件名或路径不存在,或者该文件正被其他程序使用。请尝试使用“另存为”而不是“保存”。您/您的应用程序是否具有写入此文件夹的所有权限?第一步,运行代码直到此时,然后尝试手动保存。在我拥有的所有excel互操作代码中,我使用工作簿上的“保存”方法在我拥有的所有excel互操作代码中,我使用工作簿上的“保存”方法