Excel转换成DataTable DataTable转换成Excel

<div class="upload">
   <asp:FileUpload ID="uploadFile" style="outline:none;" runat="server" BorderStyle="None" >
</div>

using Aspose.Cells;

if(uploadFile.HasFile)
{
   string fileContentType=uploadFile.PostedFile.ContentType;
   string name=Path.GetFileName(uploadFile.PostedFile.FileName);
   string filePath=Server.MapPath("/UploadFiles/Enterprise/djs/");
   string webFilePath=Server.MapPath("/UploadFiles/Enterprise/djs/"+name);
  
   if(Directory.Exists(filePath)==false) //判断目录是否存在
   {
      Directory.CreateDirectory(filePath);
   }

   uploadFile.SaveAs(webFilePath); //上传
   
   DataTable dt=ExcelToDt(webFilePath); //Excel转化成DataTable

}

public DataTable ExcelToDt(string path)
{
   Aspose.Cells.Workbook workbook=new Aspose.Cells.Workbook();
   workbook.Open(path);
   Aspose.Cells.Worksheet worksheet=workbook.Worksheets[0];
   DataTable dt=worksheet.Cells.ExportDataTable(1,0,worksheet.Cells.MaxRow+1,worksheet.Cells.MaxColumn+1);
   return dt;
}


注:需要引用Aspose.Cells的动态库_ http://download.csdn.net/download/qq_27421041/9816409

DataTable转换成Excel

protected void GetExcel()
{
   DataTable dtNew=new DataTable();
   DataColumn dc=null;
   dc=dtNew.Columns.Add("id");
   dc=dtNew.Columns.Add("name");
   dc=dtNew.Columns.Add("type");
   
   DataTable dt1=GetUserInfo1();
   DataTable dt2=GetUserInfo2();

   for(int i=0;dt1.Rows.Count;++i)
   {
      DataRow newRow=dtNew.NewRow();
      if(dt1.Rows[i][1].ToString()!="")
         newRow["id"]=dt1.Rows[i][1].ToString();
      else
         newRow["id"]="";
      if(dt1.Rows[i][2].ToString()!="")
         newRow["name"]=dt1.Rows[i][2].ToString();
      else
         newRow["name"]="";
      if(dt2.Rows[i][1].ToString()!="")
         newRow["type"]=dt2.Rows[i][1].ToString(); 
      else
         newRow["type"]="";
      
      dtNew.Rows.Add(newRow);
    }
    DataTableToExcel(dtNew,"user_"+DateTime.Now.ToShortDateString()+".xls");

}

protected DataTable GetUserInfo1()
{
   string sql="";
   return DbHelper.ExecuteTable(CommandType.Text,sql,null);
}
protected DataTable GetUserInfo2()
{
   string sql="";
   return DbHelper.ExecuteTable(CommandType.Text,sql,null);
}

public static void DataTableToExcel(DataTable dt,string FileName)
{
   HttpResponse resp;
   resp=System.Web.HttpContext.Current.Response;
   resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
   resp.AppendHeader("Content-Disposition","attachment;filename="+FileName);
   string colHeaders="",Is_item="";
   
   //定义表对象与行对象,同时用法DataSet对其值进行初始化
   DataRow[] myRow=dt.Select(); //可以类似dt.Select("id>10")之形式达到数据筛选目的
   int i=0;
   int cl=dt.Columns.Count;

   //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
   for(int i=0;i<cl;i++)
   {
      if(i==(cl-1)) //最后一列,加\n
         colHeaders+=dt.Rows[i].Caption.ToString()+"\n";
      else
         colHeaders+=dt.Rows[i].Caption.ToString()+"\t";
   }   
   resp.Write(colHeaders);
   //向HTTP输出流中写入取得的数据信息

   //每一行 处理数据
   foreach(DataRow row in myRow)
   {
      //当前行数据写入HTTP输出流,并且置空Is_item以便下行数据
      for(i=0;i<c1;i++)
      {
         if(i==(cl-1)) //最后一列,加\n
            Is_item+=row[i].ToString()+"\n";
         else
            Is_item+=row[i].ToString()+"\t";
       }
       resp.Write(Is_item);
       Is_item="";
   }
   resp.End();

}




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值