C# 读取Excel数据 并对日期是数字的进行处理
2010-04-28 09:50
417 查看
//按钮事件
protected void btnQueryExcel_Click(object sender, EventArgs e)
{
DataSet ds; string strError;
string SaveFilePath = Server.MapPath(Page.Request.ApplicationPath) + "//UpLoadExcel";
if (!System.IO.Directory.Exists(SaveFilePath))
System.IO.Directory.CreateDirectory(SaveFilePath);
if (FileUpload1.FileName.Trim() =="")
{
alert("请选择要导入的Excel");
return;
}
FileUpload1.SaveAs(SaveFilePath + "//" + FileUpload1.FileName);
string Sql = "SELECT * FROM [CCS$];";
bool bRet = ImportDataFromExcelToDs(out ds, SaveFilePath + "//" + FileUpload1.FileName, Sql, out strError);
if (!bRet)
{
alert(strError);
return;
}
if (ds.Tables.Count == 0 && ds.Tables[0].Rows.Count > 0)
{
alert("没有数据");
return;
}
if (!QueryExcelData(ds, out strError))
{
alert(strError);
return;
}
}
/// <summary>
/// 将DataSet当中的数据导入到Excel当中
/// </summary>
/// <param name="ds"></param>
/// <param name="strError"></param>
/// <returns></returns>
private bool QueryExcelData(DataSet ds, out string strError)
{
gvClient.DataSource = null;
gvClient.DataBind();
strError = "";
List<ClientStructure> datas = new List<ClientStructure>();
try
{
#region 给对象赋值
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow dr = ds.Tables[0].Rows[i];
ClientStructure data = new ClientStructure();
//序号(展现用)
data.SN = i + 1;
//公司ID
data.CorpID = CheckUser().CorpID;
//客户名称(暂无用)
data.ClientName = dr[0].ToString().Replace("/n","");
if (data.ClientName == "")
{
break;
}
//客户编码(根据客户编码查询客户ID)
data.ClientKey = dr[1].ToString().Replace("/n", "");
if (data.ClientKey == "")
{
break;
}
//月份 查询数据格式为数字
try
{
data.RecordMonth = DateTime.FromOADate(Convert.ToInt32(dr[2].ToString())).ToString
("yyyy-MM");
}
catch
{
data.RecordMonth = "";
}
//月份,查询数据格式为日期格式
try
{
if (data.RecordMonth=="")
{
data.RecordMonth = Convert.ToDateTime(dr[2].ToString()).ToString("yyyy-MM");
}
}
catch
{
data.RecordMonth = "";
}
//将对象添加到集合当中
datas.Add(data);
}
#endregion
}
catch (System.Exception e)
{
strError = e.Message;
return false;
}
gvClient.DataSource = datas;
gvClient.DataBind();
ViewState["data"] = datas;
return true;
//ClientStructureManager manager = new ClientStructureManager();
//return manager.AddClientStructureFromExcel(datas, out strError);
}
private bool ImportDataFromExcelToDs(out System.Data.DataSet ds, string FileName, string Sql, out string strError)
{
ds = new DataSet();
strError = "";
string Connection = GetConn(FileName);
if (Connection.Equals(""))
{
strError = "所选文件不是Excel";
return false;
}
System.Data.OleDb.OleDbConnection OConnection = new System.Data.OleDb.OleDbConnection(Connection);
try
{
System.Data.OleDb.OleDbCommand Ocmd = new System.Data.OleDb.OleDbCommand(Sql, OConnection);
System.Data.OleDb.OleDbDataAdapter adp = new System.Data.OleDb.OleDbDataAdapter(Ocmd);
OConnection.Open();
adp.Fill(ds);
OConnection.Close();
}
catch
{
if (OConnection.State == ConnectionState.Open)
OConnection.Close();
}
return true;
}
private string GetConn(string FileName)
{
int index = FileName.LastIndexOf(".");
string suffix = FileName.Substring(index + 1);
if (suffix.Equals("xls"))
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";Extended Properties=Excel 8.0;";
else if (suffix.Equals("xlsx"))
return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties=Excel 12.0;";
else
return "";
}
protected void btnQueryExcel_Click(object sender, EventArgs e)
{
DataSet ds; string strError;
string SaveFilePath = Server.MapPath(Page.Request.ApplicationPath) + "//UpLoadExcel";
if (!System.IO.Directory.Exists(SaveFilePath))
System.IO.Directory.CreateDirectory(SaveFilePath);
if (FileUpload1.FileName.Trim() =="")
{
alert("请选择要导入的Excel");
return;
}
FileUpload1.SaveAs(SaveFilePath + "//" + FileUpload1.FileName);
string Sql = "SELECT * FROM [CCS$];";
bool bRet = ImportDataFromExcelToDs(out ds, SaveFilePath + "//" + FileUpload1.FileName, Sql, out strError);
if (!bRet)
{
alert(strError);
return;
}
if (ds.Tables.Count == 0 && ds.Tables[0].Rows.Count > 0)
{
alert("没有数据");
return;
}
if (!QueryExcelData(ds, out strError))
{
alert(strError);
return;
}
}
/// <summary>
/// 将DataSet当中的数据导入到Excel当中
/// </summary>
/// <param name="ds"></param>
/// <param name="strError"></param>
/// <returns></returns>
private bool QueryExcelData(DataSet ds, out string strError)
{
gvClient.DataSource = null;
gvClient.DataBind();
strError = "";
List<ClientStructure> datas = new List<ClientStructure>();
try
{
#region 给对象赋值
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow dr = ds.Tables[0].Rows[i];
ClientStructure data = new ClientStructure();
//序号(展现用)
data.SN = i + 1;
//公司ID
data.CorpID = CheckUser().CorpID;
//客户名称(暂无用)
data.ClientName = dr[0].ToString().Replace("/n","");
if (data.ClientName == "")
{
break;
}
//客户编码(根据客户编码查询客户ID)
data.ClientKey = dr[1].ToString().Replace("/n", "");
if (data.ClientKey == "")
{
break;
}
//月份 查询数据格式为数字
try
{
data.RecordMonth = DateTime.FromOADate(Convert.ToInt32(dr[2].ToString())).ToString
("yyyy-MM");
}
catch
{
data.RecordMonth = "";
}
//月份,查询数据格式为日期格式
try
{
if (data.RecordMonth=="")
{
data.RecordMonth = Convert.ToDateTime(dr[2].ToString()).ToString("yyyy-MM");
}
}
catch
{
data.RecordMonth = "";
}
//将对象添加到集合当中
datas.Add(data);
}
#endregion
}
catch (System.Exception e)
{
strError = e.Message;
return false;
}
gvClient.DataSource = datas;
gvClient.DataBind();
ViewState["data"] = datas;
return true;
//ClientStructureManager manager = new ClientStructureManager();
//return manager.AddClientStructureFromExcel(datas, out strError);
}
private bool ImportDataFromExcelToDs(out System.Data.DataSet ds, string FileName, string Sql, out string strError)
{
ds = new DataSet();
strError = "";
string Connection = GetConn(FileName);
if (Connection.Equals(""))
{
strError = "所选文件不是Excel";
return false;
}
System.Data.OleDb.OleDbConnection OConnection = new System.Data.OleDb.OleDbConnection(Connection);
try
{
System.Data.OleDb.OleDbCommand Ocmd = new System.Data.OleDb.OleDbCommand(Sql, OConnection);
System.Data.OleDb.OleDbDataAdapter adp = new System.Data.OleDb.OleDbDataAdapter(Ocmd);
OConnection.Open();
adp.Fill(ds);
OConnection.Close();
}
catch
{
if (OConnection.State == ConnectionState.Open)
OConnection.Close();
}
return true;
}
private string GetConn(string FileName)
{
int index = FileName.LastIndexOf(".");
string suffix = FileName.Substring(index + 1);
if (suffix.Equals("xls"))
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";Extended Properties=Excel 8.0;";
else if (suffix.Equals("xlsx"))
return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties=Excel 12.0;";
else
return "";
}
相关文章推荐
- C# 读取Excel数据 并对日期是数字的进行处理
- C# 读取excel日期时获取到数字转换成日期
- C# Python 读取txt中的文件,将16进制的数据按照小端方式排列,处理为有符号的数字,并写入text文件;控制台和界面两种方式
- C#程序从Excel表格中读取数据并进行处理
- C#读取Excel数据动态生成对象并进行序列化
- 判断用npoi 读取 excel 文件中的数据类型是日期OR数字
- c#用oledb读取excel进行排序,过滤重复值处理
- C# 读取excel日期时获取到数字转换成日期
- C#从Excel中读取数据为空了
- C#读取EXCEL中的数据(2)
- 使用poi读取Excel中的各种数据类型处理
- java 读取Excel 日期 不能得到原始数据 例如:42522 实际应是2016年06月
- c#中采用OLEDB方式来读取EXCEL文件和将数据写入EXCEL文件
- C# 导入Excel遇到数字字母混合列数据丢失解决
- poi读取Excel时日期为数字 的解决方法
- 用C#编程从数据库中读取图片数据导进Excel文件的方法
- C#.net读取Excel表中的数据时,有些字段内容(字符串、数字)读取不到的解决办法
- C#中NPOI操作excel之读取和写入excel数据
- 从txt文档中读取数据并做相应处理(c#)
- C#Winformd读取excel文件数据转化为DataTable