MVC架构下的导出为excel的代码
2011-09-19 16:21
211 查看
public void OutPutdata(out string filename, out string filetype, out string filePath, out long filesize, MODEL.ComplexQuery SaveQuery)
{
var querydal = new DAL.ComplexQuery();
querydal.ComQueryData(ref SaveQuery);
var dt = SaveQuery.QueryResult.Tables[0];//返回datatable表
if (dt.Rows.Count < 1)//判断是否存在数据
throw new Exception(@"数据不存在,请与系统管理员联系!");
var savepath = @"D:\PIMS\PROD\ComplexQuery";
if (!Directory.Exists(savepath))//如果不存在则创建该文件夹
Directory.CreateDirectory(savepath);
var xlApp = new Application();
xlApp.DisplayAlerts = true;//是否弹出选择框
xlApp.AlertBeforeOverwriting = true;
var workbooks = xlApp.Workbooks;//定义excel
var workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
var worksheet = (Worksheet)workbook.Worksheets[1];//取得sheet1
Range range = null;//定义range
//写入每列的列名
for (int i = 0; i < dt.Columns.Count; i++)
{
worksheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;
range = (Range)worksheet.Cells[1, i + 1];
range.HorizontalAlignment = XlVAlign.xlVAlignCenter;//居中对齐
}
//动态定义列数
range = xlApp.Range[worksheet.Cells[2, 1], worksheet.Cells[dt.Rows.Count + 1, dt.Columns.Count]];
range.HorizontalAlignment = XlVAlign.xlVAlignCenter;//居中对齐
var data = new object[dt.Rows.Count, dt.Columns.Count];
for (var i = 0; i < dt.Rows.Count; i++)
{
for (var n = 0; n < dt.Columns.Count; n++)
{
data[i, n] = dt.Rows[i]
;
}
}
range.Value2 = data;//将数据赋值到range
workbook.Saved = true;
var newid = "";
var datetime = DateTime.Now.ToString("yyyyMMddhhmmss");
//保存路径
savepath = PubMethod.GetNewPathForDupes(savepath + "\\" + datetime + ".xls", out newid);
workbook.SaveAs(savepath, XlFileFormat.xlExcel8, null, null, false, false,
XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
xlApp.Quit();
workbook = null;
workbooks = null;
worksheet = null;
var fi = new FileInfo(savepath);
filename = savepath;
filetype = "xls";
filesize = fi.Length;
filePath = savepath;
DAL.PROD.PIMSCommon.DataExportLogAdd(datetime, newid, "ComplexQuery", Convert.ToInt32(fi.Length), savepath,
SaveQuery.userID);
GC.Collect();//垃圾回收
}
Controller中代码:
using (var bll = new QueryBLL.QueryClient())
{
var filename = "";
var filetype = "";
var filePath = "";
long filesize;
bll.OutPutdata(out filetype, out filePath, out filesize, CDQuery);
jr.Data = new
{
iserror = false,
filename = filePath.Substring(filePath.LastIndexOf(@"\") + 1),//文件名
filetype = filetype,//文件类型
filePath = filePath,//文件路径
filesize = (filesize / long.Parse("1024")).ToString("0.00"),//文件大小
};
}
{
var querydal = new DAL.ComplexQuery();
querydal.ComQueryData(ref SaveQuery);
var dt = SaveQuery.QueryResult.Tables[0];//返回datatable表
if (dt.Rows.Count < 1)//判断是否存在数据
throw new Exception(@"数据不存在,请与系统管理员联系!");
var savepath = @"D:\PIMS\PROD\ComplexQuery";
if (!Directory.Exists(savepath))//如果不存在则创建该文件夹
Directory.CreateDirectory(savepath);
var xlApp = new Application();
xlApp.DisplayAlerts = true;//是否弹出选择框
xlApp.AlertBeforeOverwriting = true;
var workbooks = xlApp.Workbooks;//定义excel
var workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
var worksheet = (Worksheet)workbook.Worksheets[1];//取得sheet1
Range range = null;//定义range
//写入每列的列名
for (int i = 0; i < dt.Columns.Count; i++)
{
worksheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;
range = (Range)worksheet.Cells[1, i + 1];
range.HorizontalAlignment = XlVAlign.xlVAlignCenter;//居中对齐
}
//动态定义列数
range = xlApp.Range[worksheet.Cells[2, 1], worksheet.Cells[dt.Rows.Count + 1, dt.Columns.Count]];
range.HorizontalAlignment = XlVAlign.xlVAlignCenter;//居中对齐
var data = new object[dt.Rows.Count, dt.Columns.Count];
for (var i = 0; i < dt.Rows.Count; i++)
{
for (var n = 0; n < dt.Columns.Count; n++)
{
data[i, n] = dt.Rows[i]
;
}
}
range.Value2 = data;//将数据赋值到range
workbook.Saved = true;
var newid = "";
var datetime = DateTime.Now.ToString("yyyyMMddhhmmss");
//保存路径
savepath = PubMethod.GetNewPathForDupes(savepath + "\\" + datetime + ".xls", out newid);
workbook.SaveAs(savepath, XlFileFormat.xlExcel8, null, null, false, false,
XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
xlApp.Quit();
workbook = null;
workbooks = null;
worksheet = null;
var fi = new FileInfo(savepath);
filename = savepath;
filetype = "xls";
filesize = fi.Length;
filePath = savepath;
DAL.PROD.PIMSCommon.DataExportLogAdd(datetime, newid, "ComplexQuery", Convert.ToInt32(fi.Length), savepath,
SaveQuery.userID);
GC.Collect();//垃圾回收
}
Controller中代码:
using (var bll = new QueryBLL.QueryClient())
{
var filename = "";
var filetype = "";
var filePath = "";
long filesize;
bll.OutPutdata(out filetype, out filePath, out filesize, CDQuery);
jr.Data = new
{
iserror = false,
filename = filePath.Substring(filePath.LastIndexOf(@"\") + 1),//文件名
filetype = filetype,//文件类型
filePath = filePath,//文件路径
filesize = (filesize / long.Parse("1024")).ToString("0.00"),//文件大小
};
}
相关文章推荐
- MVC架构下的导出为excel的代码
- asp.net webform/mvc导出Excel通用代码
- vue+springmvc导出excel数据的实现代码
- VB.Net导出SQLServer数据到Excel中代码架构段
- 来段代码提提神-Java实现EXCEL模板化导出:ajax+springMVC或者Struts为例
- 基于Spring3 MVC实现批量导出数据成Excel文件!
- C#导入导出EXCEL文件的代码实例
- JavaScript将Table导出到Excel实现思路及代码
- [导入]Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
- HSSFWorkbook使用java代码导出excel
- Coolite优化导出Excel文件实现代码
- Java Web利用POI导出Excel例子(采用Spring mvc架构)
- Java中用JXL导出Excel代码详解
- SpringMVC/SpringBoot使用easypoi实现Excel文件导入导出功能实现
- asp.net导出Excel类库代码分享
- java读取Excel导出Html对应的table代码
- mvc项目,导出到Excel,中文显示乱码
- POI导出excel典型代码
- 关于 数据源 导出excel (这是) 通过 画一个html 实现的、最简单、好理解、的代码、
- asp.net mvc 数据导出excel表及自excel表导入数据到相应表