【发布时间】:2014-05-23 09:24:55
【问题描述】:
我上传了 excel 文件,但 GridView 无法获取“U、V 和 AB”列的值,其他列可以。
“列 F21,F22,F28”中的值返回 null,因为这些列中有值。
我很感激有人可以帮助我~~~
Excel 文件:enter link description here
Excel 文件:
GridView
.CS
protected void upload_Click(object sender, EventArgs e)
{
string path = Server.MapPath(@"~\Reference\");
string the_file = path + ExcelUpload.FileName;
ExcelUpload.SaveAs(the_file);
if (System.IO.File.Exists(the_file))
{
DataTable test = getDataFromXLS(the_file);
GridView1.DataSource = test;
GridView1.DataBind();
foreach (DataRow dr in test.Rows)
{
if (dr["F31"].ToString() != "")
{
project_id.Value = dr["F31"].ToString();
if (dr["F21"].ToString() != "")
rental.Value = dr["F21"].ToString();
if (dr["F22"].ToString() != "")
ssf.Value = dr["F22"].ToString();
if (dr["F23"].ToString() != "")
pct.Value = dr["F23"].ToString();
//rate
if (dr["F24"].ToString() != "")
{
if (dr["F24"].ToString() == "I")
rate.Value = "0";
else if (dr["F24"].ToString() == "E")
rate.Value = "1";
}
if (dr["F28"].ToString() != "")
{
DateTime date;
var success = DateTime.TryParseExact(dr["F28"].ToString(),
"d/M/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out date);
startDate.Value = date.ToString("yyyy-MM-dd");
}
Response.Write(startDate.Value); //null value
} //end of if loop
} //end of foreach
} // end of file exist
}
private DataTable getDataFromXLS(string strFilePath)
{
try
{
string strConnectionString = "";
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + strFilePath + "; Jet OLEDB:Engine Type=5;" +
"Extended Properties=Excel 8.0;";
OleDbConnection cnCSV = new OleDbConnection(strConnectionString);
cnCSV.Open();
OleDbCommand cmdSelect =
new OleDbCommand(@"SELECT * FROM [projection_n$]", cnCSV);
OleDbDataAdapter daCSV = new OleDbDataAdapter();
daCSV.SelectCommand = cmdSelect;
DataTable dtCSV = new DataTable();
daCSV.Fill(dtCSV);
cnCSV.Close();
daCSV = null;
return dtCSV;
}
【问题讨论】: