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