您的位置:首页 > 其它

Excel的导入导出功能实现

2011-01-16 18:33 567 查看
很多时候做项目的时候,都要求将数据保存为一个Excel文档,下面我实现一个Excel的导入导出功能,代码经过本人的实践测试可以实现,我也在网上了解过Excel的编程使用,有些说需要导入某些组件的,而我这个代码是不需要的,如果你懂那种方法,可以留言与我交流,让我学习了。

1、Excel的导入功能

函数只需要传入一个Datatable和一个文件名即可,但需要注意的是,Excel的列头是select出来的字段,所以,我们需要使用select id as 编号....,这样子,Excel的列头才显示为中文。

/// <summary>
/// 将DataTable 导出为EXCEL,并直接提供下载
/// </summary>
/// <param name="ds">需要导处的DataTable</param>
/// <param name="fileName">到处生成的文件名</param>
///
public bool ExportExcelByDataTable(DataTable dt, string fileName)
{
try
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Charset = "utf-7";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-7");

HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
StringWriter stringWrite = new StringWriter();
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
DataGrid dg = new DataGrid();
dg.HeaderStyle.CssClass = "dgHead";
dg.DataSource = dt;
dg.DataBind();
dg.RenderControl(htmlWrite);

HttpContext.Current.Response.Write(stringWrite.ToString());
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + ".xls");
HttpContext.Current.Response.Charset = "gb2312";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
HttpContext.Current.Response.End();
return true;
}
catch
{
return false;
}
}


2、Excel的导入功能

protected void Page_Load(object sender, EventArgs e)
{
DataTableToDB();
}
//一、把DataTable插入数据库
public void DataTableToDB()
{
string _strExcelFileName = "D://2010.xls";
DataTable dtExcel = ExcelToDataTable(_strExcelFileName, "2010");
int res = 0;
for (int i = 0; i < dtExcel.Rows.Count; i++)
{
res = InsertDataToAccess(dtExcel.Rows[i][1].ToString(), dtExcel.Rows[i][2].ToString(), dtExcel.Rows[i][3].ToString(), dtExcel.Rows[i][4].ToString(), dtExcel.Rows[i][5].ToString(), dtExcel.Rows[i][6].ToString(), dtExcel.Rows[i][7].ToString(), dtExcel.Rows[i][8].ToString(), dtExcel.Rows[i][9].ToString(), dtExcel.Rows[i][10].ToString(), dtExcel.Rows[i][11].ToString());
}
if (res > 0)
{
Response.Write("yes");
}
}

//二、把Excel数据读入DataTable
public static DataTable ExcelToDataTable(string strExcelFileName, string strSheetName)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties=Excel 8.0;";
string strExcel = string.Format("select * from [{0}$]", strSheetName);
DataSet ds = new DataSet();

using (OleDbConnection conn = new OleDbConnection(strConn))
{
conn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
adapter.Fill(ds, strSheetName);
conn.Close();
}

return ds.Tables[strSheetName];
}

//三、向Access数据库表插入数据
public static int InsertDataToAccess(string company, string check_time, string drug_name, string manufacturer, string batch_number, string standard, string category, string num, string createtime, string belonguser, string wenhao)
{
string strInsertString = "INSERT INTO drugsample (company,check_time,drug_name,manufacturer,batch_number,standard,category,num,createtime,belonguser,wenhao) VALUES (@company,@check_time,@drug_name,@manufacturer,@batch_number,@standard,@category,@num,@createtime,@belonguser,@wenhao)";
OleDbParameter[] paras = {
new OleDbParameter("@company",company),
new OleDbParameter("@check_time",check_time),
new OleDbParameter("@drug_name",drug_name),
new OleDbParameter("@manufacturer",manufacturer),
new OleDbParameter("@batch_number",batch_number),
new OleDbParameter("@standard",standard),
new OleDbParameter("@category",category),
new OleDbParameter("@num",num),
new OleDbParameter("@createtime",createtime),
new OleDbParameter("@belonguser",belonguser),
new OleDbParameter("@wenhao",wenhao)
};
int res = sqlhelper.doExecuteNonQuery(strInsertString, paras);
return res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐