导出
(1)把所查处的数据导出到一张Excel表里:
(图 2)
(图 3)
(图 4)
(2)界面层所用的方法:
function daoru() {
window.location.href = "/CaiLiaoDanJia/DownloadFile”;
}
(3)调用控制器的方法是:
#region 导出方法一
BLL.UpLoadBLL myUpLoadBLL = new BLL.UpLoadBLL();
public FileResult DownloadFile()
{
DataSet ds = new DataSet();
DataTable dt = myUpLoadBLL.ForUpLoad();
//ds.Tables.Add(dt);
string schoolname = "401";
//创建Excel文件的对象
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
//添加一个sheet
NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");
//获取list数据
//List<TB_STUDENTINFOModel> listRainInfo = dt.t(schoolname);
//给sheet1添加第一行的头部标题
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
for (int i = 0; i < dt.Columns.Count; i++)
{
row1.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
}
//将数据逐步写入sheet1各个行
for (int i = 0; i < dt.Rows.Count; i++)
{
NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1);
for (int j = 0; j < dt.Columns.Count; j++)
{
rowtemp.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString().Trim());
}
}
// 写入到客户端
System.IO.MemoryStream ms = new System.IO.MemoryStream();
book.Write(ms);
ms.Seek(0, SeekOrigin.Begin);
return File(ms, "application/vnd.ms-excel", "导出.xls");
}
#endregion
调用逻辑层的方法:
#region 下载
public DataTable ForUpLoad()
{
//创建数组
SqlParameter[] sql ={
//实例化并传入参数和参数类型
new SqlParameter("@type",SqlDbType.Char)
};
//为参数赋值
sql[0].Value = "ForUpLoad";
//调用DAL方法连接数据库提取数据存放到数据表dt中
DataTable dt = myPublicMoth.QueryDataTable("ForUpLoadAndDownLoad", sql);
//返回dt
return dt;
}
#endregion
数据层SQL语句:
BEGIN
if(@type='ForUpLoad')
begin
SELECT Person.*
FROM Person
end
导入方法二:
(图 1)
(图 2)
(图 3)
(图 4)
界面的代码:
<a href="/Main/ExportExcel">Click here</a>
<p align="left">控制器的方法:</p><pre name="code" class="csharp">#region 导出方法二
public FileResult ExportExcel()
{
var sbHtml = new StringBuilder();
sbHtml.Append("<table border='1' cellspacing='0' cellpadding='0'>");
sbHtml.Append("<tr>");
var lstTitle = new List<string> { "编号", "姓名", "年龄", "创建时间" };
//自己创建标题
foreach (var item in lstTitle)
{
sbHtml.AppendFormat("<td style='font-size: 14px;text-align:center;background-color: #DCE0E2; font-weight:bold;' height='25'>{0}</td>", item);
}
sbHtml.Append("</tr>");
for (int i = 0; i < 1000; i++)
{
sbHtml.Append("<tr>");
sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", i);
sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>屌丝{0}号</td>", i);
sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", new Random().Next(20, 30) + i);
sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", DateTime.Now);
sbHtml.Append("</tr>");
}
sbHtml.Append("</table>");
//第一种:使用FileContentResult
byte[] fileContents = Encoding.Default.GetBytes(sbHtml.ToString());
return File(fileContents, "application/ms-excel", "fileContents.xls");
//第二种:使用FileStreamResult
var fileStream = new MemoryStream(fileContents);
return File(fileStream, "application/ms-excel", "fileStream.xls");
//第三种:使用FilePathResult
//服务器上首先必须要有这个Excel文件,然会通过Server.MapPath获取路径返回.
//var fileName = Server.MapPath("~/Files/fileName.xls");
//return File(fileName, "application/ms-excel", "fileName.xls");
}
#endregion
调用逻辑层的方法是一样的 .
仅供学习参考!