public DataSet ExecleDs(string filenameurl,string table)
{
string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" +filenameurl+ ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn); OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Sheet1$]", conn); DataSet ds = new DataSet(); odda.Fill(ds,table);
return ds; } string strpath = FileUpload1.PostedFile.FileName.ToString();
//获取Execle文件路径
string filename = FileUpload1.FileName;
//获取Execle文件名
DataSet ds = ExecleDs(strpath,filename);
连接不上exeel,在本机上没问题,在服务器上就有问题了,,服务器已装excel2003
{
string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" +filenameurl+ ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn); OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Sheet1$]", conn); DataSet ds = new DataSet(); odda.Fill(ds,table);
return ds; } string strpath = FileUpload1.PostedFile.FileName.ToString();
//获取Execle文件路径
string filename = FileUpload1.FileName;
//获取Execle文件名
DataSet ds = ExecleDs(strpath,filename);
连接不上exeel,在本机上没问题,在服务器上就有问题了,,服务器已装excel2003
public DataTable GetExcelData()
{
// HDR=NO 即无字段
// HDR=yes 即有字段,一般默认excel表中第1行的列标题为字段名,如姓名、年龄等
//如果您在连接字符串中指定 HDR=NO,Jet OLE DB 提供程序将自动为您命名字段(F1 表示第一个字段,F2 表示第二个字段,依此类推);
// IMEX 表示是否强制转换为文本
// Excel 驱动程序读取指定源中一定数量的行(默认情况下为 8 行)以推测每列的数据类型。
//如果推测出列可能包含混合数据类型(尤其是混合了文本数据的数值数据时),
//驱动程序将决定采用占多数的数据类型,并对包含其他类型数据的单元返回空值。
//(如果各种数据类型的数量相当,则采用数值类型。)
//Excel 工作表中大部分单元格格式设置选项不会影响此数据类型判断。
//可以通过指定导入模式来修改 Excel 驱动程序的此行为。
//若要指定导入模式,请在“属性”窗口中将 IMEX=1 添加到 Excel
//连接管理器的连接字符串内的扩展属性值中。
if (!File.Exists(pathFileName))
{
return null;
}
try
{
string _strsql = string.Format("SELECT * FROM [Sheet1$] ");//WHERE 状态='1'
string _strConn = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0} ;Extended Properties='Excel 8.0;HDR=NO'", pathFileName);
OleDbConnection conn = new OleDbConnection(_strConn);
DataTable dt = new DataTable(); conn.Open();
OleDbDataAdapter ada = new OleDbDataAdapter(_strsql, _strConn);
ada.Fill(dt); conn.Close(); return dt;
}
catch (Exception)
{
return null;
}
}
http://kb.cnblogs.com/a/1523479/
用 Excel 的工作簿名称替换 SQL 语句中的 Sheet1
Server.MapPath("~/")
using(OleDbConnection OleConn = new OleDbConnection(strConn))
{
OleConn.Open();
String sql = "SELECT * FROM [Sheet1$]";
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
DataSet ds= new DataSet();
OleDaExcel.Fill(ds);
OleConn.Close();
}
你可以参考
string filepath = Server.MapPath("App_Data"); //当前文件夹---也可以用指定路径及绝对路径
string[] file = System.IO.Directory.GetFiles(filepath); //得到文件夹
foreach (string thisFile in file)
{
if (System.IO.File.Exists(thisFile) && System.IO.Path.GetExtension(thisFile).ToLower() == ".xls") 是否存在
{
string olecon = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source= '" + thisFile + "'";
OleDbConnection mycon = new OleDbConnection(olecon);
mycon.Open();
OleDbDataAdapter ODB = new OleDbDataAdapter(oleSQL ,mycon );
DataSet myds = new DataSet();
ODB.Fill(myds, "Person_XX");
{
Response.Write("<script>alert('服务器磁盘中不存在此备份文件,请检查!');</script>");
}
服务器建议采用另一种方式,即先把文件进行存储后,再操作.再删除。
ExecleDs(FileUpload1.PostedFile.InputStream,filename)
2.执行该语句的角色(ASPNET)需要是DB的SA.