private void EcxelToGridView(string BtnExcPath,string sheetName)
{
//根据路径打开一个Excel文件并将数据填充到ds中
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + BtnExcPath + ";Extended Properties ='Excel 8.0;HDR=YES;IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
strExcel = "select * from [" + sheetName + "]";
在conn.Open()出报错。
手动打开该Excel文件,保存提示可能含有与Unicode文本不兼容的功能。
如果另保存一份,则C#读取没有问题。
这问题怎么处理,每天都有一个新的Excel文件,C#能做到自动另保存一份,而不用手工保存吗
7 个解决方案
#1
另保存一份?直接把这个文件复制一下不就可以吗?
conn.Open()报什么错?
conn.Open()报什么错?
#2
BtnExcPath 值是什么?有可能这个影响的
#3
string strConn = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + filenameurl + ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string tableName=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0][2].ToString().Trim();
OleDbDataAdapter odda = new OleDbDataAdapter("select * from ["+tableName+"]",conn);
#4
“手动打开该Excel文件,保存提示可能含有与Unicode文本不兼容的功能。
如果另保存一份,则C#读取没有问题。
这问题怎么处理,每天都有一个新的Excel文件,C#能做到自动另保存一份,而不用手工保存吗”
说明是excel本身问题!
你在代码用FileInfo.CopyTo ,另存一份试试。。。
如果另保存一份,则C#读取没有问题。
这问题怎么处理,每天都有一个新的Excel文件,C#能做到自动另保存一份,而不用手工保存吗”
说明是excel本身问题!
你在代码用FileInfo.CopyTo ,另存一份试试。。。
#5
public static DataTable ExcelToDataTable(string strExcelFileName, string strSheetName)
{
//源的定义
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
//Sql语句
//string strExcel = string.Format("select * from [{0}$]", strSheetName); 这是一种方法
string strExcel = "select * from [sheet1$]";
//定义存放的数据表
DataSet ds = new DataSet();
//连接数据源
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
//适配到数据源
OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
adapter.Fill(ds, strSheetName);
conn.Close();
return ds.Tables[strSheetName];
}
然后直接把Table的数据Fill到DateGridView里面
#6
FileInfo.CopyTo 不行,还是一样。
excel中含有日文,我想与这个有关系,我读Excel的方法处理不了这种情况?是要换一种读方法?
#7
复制和另保存不一样
#1
另保存一份?直接把这个文件复制一下不就可以吗?
conn.Open()报什么错?
conn.Open()报什么错?
#2
BtnExcPath 值是什么?有可能这个影响的
#3
string strConn = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + filenameurl + ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string tableName=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0][2].ToString().Trim();
OleDbDataAdapter odda = new OleDbDataAdapter("select * from ["+tableName+"]",conn);
#4
“手动打开该Excel文件,保存提示可能含有与Unicode文本不兼容的功能。
如果另保存一份,则C#读取没有问题。
这问题怎么处理,每天都有一个新的Excel文件,C#能做到自动另保存一份,而不用手工保存吗”
说明是excel本身问题!
你在代码用FileInfo.CopyTo ,另存一份试试。。。
如果另保存一份,则C#读取没有问题。
这问题怎么处理,每天都有一个新的Excel文件,C#能做到自动另保存一份,而不用手工保存吗”
说明是excel本身问题!
你在代码用FileInfo.CopyTo ,另存一份试试。。。
#5
public static DataTable ExcelToDataTable(string strExcelFileName, string strSheetName)
{
//源的定义
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
//Sql语句
//string strExcel = string.Format("select * from [{0}$]", strSheetName); 这是一种方法
string strExcel = "select * from [sheet1$]";
//定义存放的数据表
DataSet ds = new DataSet();
//连接数据源
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
//适配到数据源
OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
adapter.Fill(ds, strSheetName);
conn.Close();
return ds.Tables[strSheetName];
}
然后直接把Table的数据Fill到DateGridView里面
#6
FileInfo.CopyTo 不行,还是一样。
excel中含有日文,我想与这个有关系,我读Excel的方法处理不了这种情况?是要换一种读方法?
#7
复制和另保存不一样