当前位置:编程学习 > C#/ASP.NET >>

100分!asp.net数据导入到excel中报错说 “CS1501: “Open”方法没有采用“13”个参数的重载”

string FilePath = Server.MapPath(" + reportExcelin.xls + ");
        SqlConnection strcon = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["conStr"]);
        strcon.Open();
        SqlDataAdapter sda = new SqlDataAdapter("select * from product,btype,stype where product.sid=stype.sid and product.bid=btype.bid order by pid ", strcon);
        DataSet dataset1 = new DataSet();
        sda.Fill(dataset1, "products");
        Microsoft.Office.Interop.Excel.Application Myexcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
       // Excel.Application Myexcel = new Excel.ApplicationClass();
        if (Myexcel == null)
        {
            
            return;
        }
        Myexcel.Visible = true;
        Myexcel.UserControl = true;
        Object missing = System.Reflection.Missing.Value;

        Excel.Workbooks Myworkbooks = Myexcel.Workbooks;

        Excel.Workbook Myworkbook =Myexcel.Workbooks.Open (@"c:\test.xls", missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
        Excel.Worksheet Myworksheet = (Excel.Worksheet)Myworkbook.Worksheets[1];
        Excel.Range MyRange = Myworksheet.get_Range("A1", "N1");
        int Rindex = dataset1.Tables["products"].Rows.Count;
        int Cindex = dataset1.Tables["products"].Columns.Count;
        Object[] MyHead = new Object[Cindex];
        for (int i = 0; i < Cindex; i++)
        {
            MyHead[i] = dataset1.Tables["products"].Columns[i].Caption;
        }
        MyRange.Value2 = MyHead;
        Object[,] EValue = new Object[Rindex, Cindex];
        MyRange = MyRange.get_Range("A2", "N11");
        for (int i = 0; i < Rindex; i++)
        {

            for (int j = 0; j < Cindex; j++)
            {
                EValue[i, j] = dataset1.Tables["products"].Rows[i][j].ToString();
            }
        }
        MyRange.Value2 = EValue;
        Myworkbook.Save();
        Myworkbooks.Close();
        Myexcel.Quit();
      
         

    }

在网上找了上面的代码,命名空间也照着用了
using Microsoft.Office.Interop;
using Excel = Microsoft.Office.Interop.Excel;
引用也用了com组件
但老报错说 “CS1501: “Open”方法没有采用“13”个参数的重载”
是WEB开发中用的,谢谢! --------------------编程问答-------------------- Myexcel.Workbooks.Open (@"c:\test.xls", missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing)

你看一下这个函数的参数表,然后照它的参数表填参数就好了! --------------------编程问答-------------------- 最好用VB,或者用个VB项目作调用中转,用VB写这个很多可选参数不用写的,不用老查参数烦半天~~~ --------------------编程问答-------------------- 参数给多了吧,查下MSDN中Excel.Workbooks类的Open方法,看有哪些重载 --------------------编程问答-------------------- 都报错了,参数不对呗。。
找找这个方法的参数列表看看。。 --------------------编程问答-------------------- 查vba帮助手册
--------------------编程问答-------------------- 智能感知会有参数提示的,我记得还有些是ref 的
--------------------编程问答-------------------- 你的excel什么版本?不同版本的COM对象的Open方法参数列表不一样,新版另外提供了一个_Open的方法,参数列表和旧版Open一样,以保证兼容性
WExcel.Workbook Myworkbook = Myexcel.Workbooks._Open(XlsFile.FullName, missing, 
      missing, missing, missing, missing, 
      missing, missing, missing, missing, 
      missing, missing, missing);

另外SaveAs时候office2003和officexp/2000也不一样,也提供了_SaveAs。 --------------------编程问答-------------------- 我用的是excel 2003 --------------------编程问答-------------------- up --------------------编程问答-------------------- mark --------------------编程问答-------------------- 关注,顶了 --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 以 
workbook = application.Workbooks.Open(strFileFullName,
_, _, _, _, _, _, _, _, _, _, _, _, _, _); 
打开试试 --------------------编程问答-------------------- 不懂,请教 --------------------编程问答-------------------- 新老版本的Excel的Open函数参数个数不一致。 --------------------编程问答-------------------- MyRange = MyRange.get_Range("A2", "N11");
其中的 "N11" 我想通过变量实现,即 记录的行数 Rindex 
怎么写变量呢? --------------------编程问答-------------------- 应该是_Open(。。。。。。) --------------------编程问答-------------------- 建议你用文件流读写的方式导出
我做了一个C/S结构的项目
其中导出Excel可累坏了、最后还是用了文件流,而且比调用Excel进程要快的多了
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,