asp.Net Excel 2007 2003 兼容 导入

风2013 2011-03-18 10:56:23
有没有 asp.net程序 Excel 2007 2003 兼容 导入的方法啊,各位大虾给个好点的方法 谢谢!!
...全文
161 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
子夜__ 2011-03-18
  • 打赏
  • 举报
回复
应该都支持.

/// <summary>
/// 读取Excel文档
/// </summary>
/// <param name="Path">文件名称</param>
/// <returns>返回一个数据集</returns>
public DataSet ExcelToDS(string Path)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel="select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds,"table1");
return ds;
}

/// <summary>
/// 写入Excel文档
/// </summary>
/// <param name="Path">文件名称</param>
public bool SaveFP2toExcel(string Path)
{
try
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
System.Data.OleDb.OleDbCommand cmd=new OleDbCommand ();
cmd.Connection =conn;
//cmd.CommandText ="UPDATE [sheet1$] SET 姓名='2005-01-01' WHERE 工号='日期'";
//cmd.ExecuteNonQuery ();
for(int i=0;i<fp2.Sheets [0].RowCount -1;i++)
{
if(fp2.Sheets [0].Cells[i,0].Text!="")
{
cmd.CommandText ="INSERT INTO [sheet1$] (工号,姓名,部门,职务,日期,时间) VALUES('"+fp2.Sheets [0].Cells[i,0].Text+ "','"+
fp2.Sheets [0].Cells[i,1].Text+"','"+fp2.Sheets [0].Cells[i,2].Text+"','"+fp2.Sheets [0].Cells[i,3].Text+
"','"+fp2.Sheets [0].Cells[i,4].Text+"','"+fp2.Sheets [0].Cells[i,5].Text+"')";
cmd.ExecuteNonQuery ();
}
}
conn.Close ();
return true;
}
catch(System.Data.OleDb.OleDbException ex)
{
System.Diagnostics.Debug.WriteLine ("写入Excel发生错误:"+ex.Message );
}
return false;
}


自己先试试你自己的方法
Adechen 2011-03-18
  • 打赏
  • 举报
回复
所谓的兼容导入不是太明白,是需要公共的导入方法?
CAINIAOXIANGFEI 2011-03-18
  • 打赏
  • 举报
回复
不行,引用的时候EXCEL只能引用一个版本的,不过2007的能兼容2003反过来就不行
wyq29 2011-03-18
  • 打赏
  • 举报
回复
就是6楼的了 根据扩展名不同 用不同的链接字符串
孟子E章 2011-03-18
  • 打赏
  • 举报
回复
EXCEL 2003

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=文件位置;Extended Properties='Excel 8.0;HDR=Yes'


2007/2010版本

EXCEL

Provider=Microsoft.Ace.OleDb.12.0;Data Source=文件位置;Extended Properties='Excel 12.0;HDR=Yes'
may_beyond 2011-03-18
  • 打赏
  • 举报
回复
不可能兼容的....
2003和2007的全完不同的.......
只有根据后缀名判断的......

2007
 if(ext.Equals(".xlsx"))
strConn = "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" + excelfile + ";Extended Properties='Excel 12.0 Xml; HDR=YES; IMEX=1'";

else if( ext.Equals(".xls"))
strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + excelfile + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";

yzf86211861 2011-03-18
  • 打赏
  • 举报
回复
判断后缀名
03和07 分别执行吧

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧