Excel文件里面的数据
员工编号 考勤人员 1日 2日 3日
22002712 员工1 休息 休息 休息
22F00360 员工2 加班 休息 休息
22F02832 员工3 产假 产假 产假
22002827 员工4 加班 休息 休息
22002713 员工5 加班 休息 休息public DataTable GetExcelDateTable(string _excelFileName)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + _excelFileName + ";" + "Extended Properties=Excel 8.0;";
string _sheetName = "";
DataSet ds = new DataSet(); using (OleDbConnection conn = new OleDbConnection(strConn))
{
conn.Open();
System.Data.DataTable table = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
if (table.Rows.Count > 0)
{
_sheetName = table.Rows[0]["TABLE_NAME"].ToString();
}
string strExcel = string.Format("select * from [{0}]", _sheetName);
OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
adapter.Fill(ds, _sheetName);
conn.Close();
}
this._sheetName = _sheetName;
return ds.Tables[_sheetName];
}调用这个函数后,取到的DataTable中“员工编号”数据有个别取不到,初步分析,是由Excel中的数据格式不一样所致(在“员工编号”数据中前面加“C_XXXXXXXXX”,这样就都能取到,但是在Excel中“设置单元格格式”不管怎样设置,都不行!)希望能这样解决:Excel里面不管怎么设置,我都能以文本的格式取到值!
员工编号 考勤人员 1日 2日 3日
22002712 员工1 休息 休息 休息
22F00360 员工2 加班 休息 休息
22F02832 员工3 产假 产假 产假
22002827 员工4 加班 休息 休息
22002713 员工5 加班 休息 休息public DataTable GetExcelDateTable(string _excelFileName)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + _excelFileName + ";" + "Extended Properties=Excel 8.0;";
string _sheetName = "";
DataSet ds = new DataSet(); using (OleDbConnection conn = new OleDbConnection(strConn))
{
conn.Open();
System.Data.DataTable table = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
if (table.Rows.Count > 0)
{
_sheetName = table.Rows[0]["TABLE_NAME"].ToString();
}
string strExcel = string.Format("select * from [{0}]", _sheetName);
OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
adapter.Fill(ds, _sheetName);
conn.Close();
}
this._sheetName = _sheetName;
return ds.Tables[_sheetName];
}调用这个函数后,取到的DataTable中“员工编号”数据有个别取不到,初步分析,是由Excel中的数据格式不一样所致(在“员工编号”数据中前面加“C_XXXXXXXXX”,这样就都能取到,但是在Excel中“设置单元格格式”不管怎样设置,都不行!)希望能这样解决:Excel里面不管怎么设置,我都能以文本的格式取到值!
mySheet.Cells(1,9).NumberFormatLocal = "@"
Excel.Range r = mySheet.get_Range(mySheet.Cells[1, 1], mySheet.Cells[1,3]);
r.NumberFormat = "@";
{
sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sExcelFile + ";Extended Properties='Excel 12.0;HDR=NO;IMEX=1;'";
}
else
{
sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sExcelFile + ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1\"";
}
加上这个属性就可以了:IMEX=1