MVC + NPOI + AJAX 쿼리 및 excel 다운로드 생성
37297 단어 Excel
public class SubArea2STIReportController : BaseController
{
[ActionDescription(" 2STI ")]
public ActionResult Index()
{
var vm = CreateVM<SubArea2STIReportVM>();
return PartialView(vm);
}
[HttpPost]
[ActionDescription(" 2STI ")]
public ActionResult Index(string NetworkStandard, string BusinessModel, string Model, string FinialYearStart, string FinialYearEnd)
{
if (string.IsNullOrEmpty(FinialYearStart))
{
var script = "Ext.Msg.alert(' ', ' ');";
return Content(script);
}
if (string.IsNullOrEmpty(FinialYearEnd))
{
var script = "Ext.Msg.alert(' ', ' ');";
return Content(script);
}
else
{
string YearStartNumber = FinialYearStart.Substring(0, 4);
string YearStart = YearStartNumber + @"-01-01";
string YearEndNumber = FinialYearEnd.Substring(0, 4);
string YearEnd = YearEndNumber + @"-01-01";
int span = int.Parse(YearEndNumber) - int.Parse(YearStartNumber);
if (span > 3)
{
var script = "Ext.Msg.alert(' ', ' ');";
return Content(script);
}
//
SqlParameter[] parms =
{
new SqlParameter("@NetworkStandard",NetworkStandard),
new SqlParameter("@BusinessModel",BusinessModel),
new SqlParameter("@Model",Model),
new SqlParameter("@StartDate",YearStart),
new SqlParameter("@EndDate",YearEnd)
};
// DataSet
DataSet result = DC.Database.RunSP("Pro_UploadData_SubArea2STI", parms);
if (result == null || result.Tables.Count < 1)
{
var script = "Ext.Msg.alert(' ', ' ');";
return Content(script);
}
else
{
// excel
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet(" 2");
int columns = result.Tables[0].Columns.Count;
//
#region
string fy = "FY";
fy += FinialYearStart.Substring(2, 2);
fy += " ";
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
row1.CreateCell(0).SetCellValue(" ");
row1.CreateCell(1).SetCellValue(" ");
row1.CreateCell(2).SetCellValue("STI ");
row1.CreateCell(3).SetCellValue(fy);
for (int i = 0; i < columns - 4; i++)
{
// DataSet , excel
string title = result.Tables[0].Columns[i+4].ColumnName.ToString() ;
string year = title.Substring(2, 2);
string month = String.Empty;
if (title.Length == 6)
{
month = title.Substring(5, 1);
}
else
{
month = title.Substring(5, 2);
}
switch (month)
{
case "1":
month = "Jan-";
break;
case "2":
month = "Feb-";
break;
case "3":
month = "Mar-";
break;
case "4":
month = "Apr-";
break;
case "5":
month = "May-";
break;
case "6":
month = "Jun-";
break;
case "7":
month = "Jul-";
break;
case "8":
month = "Aug-";
break;
case "9":
month = "Sep-";
break;
case "10":
month = "Oct-";
break;
case "11":
month = "Nov-";
break;
case "12":
month = "Dec-";
break;
}
title = month + year;
row1.CreateCell(i + 4).SetCellValue(title);
}
#endregion
//
for (int r = 0; r < result.Tables[0].Rows.Count; r++)
{
NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(r+1);
for (int c = 0; c < columns; c++)
{
rowtemp.CreateCell(c).SetCellValue(string.IsNullOrEmpty(result.Tables[0].Rows[r][c].ToString()) ? "" : result.Tables[0].Rows[r][c].ToString());
}
}
System.IO.MemoryStream ms = new System.IO.MemoryStream();
book.Write(ms);
string fileguid = Guid.NewGuid().ToString();
//
string TempExportDir = ConfigurationSettings.AppSettings["TempExportDir"].ToString();
string Filepath = @TempExportDir + "\\" + fileguid + ".xls";
// excel
System.IO.File.WriteAllBytes(Filepath, ms.ToArray());
string html = "<table class='form'><tr><td> , </td></tr>";
html += "<tr><td><a href='#' onclick=\\\"LL_DownloadExportedFile('" + fileguid + "');return false;\\\"> .xls</a></td></tr></table>";
var script2 = string.Format("var html = \"{3}\";FF_OpenPostDialog(\"{0}\", {1}, {2}, html, \"{4}\", {5});", " ", 250, 100, html, "ExportExcel", 1);
return Content(script2);
}
}
}
View 코드:
@model MBGCPB3S.ViewModels.ReportData.SubArea2STIReportVMs.SubArea2STIReportVM
@using (Extjs.BeginForm(width: 400, flex: 1,id:"Excelform",labelWidth:160))
{
using (Extjs.BeginItems())
{
using (Extjs.BeginFieldContainer(layout: ExtLayoutEnum.hbox))
{
Extjs.LabelAndComboBoxFor(x => x.FinialYearStart, x => x.FinialYear);
Extjs.LabelAndComboBoxFor(x => x.FinialYearEnd, x => x.FinialYear);
}
using (Extjs.BeginFieldContainer(layout: ExtLayoutEnum.hbox))
{
Extjs.LabelAndComboBoxFor(x => x.NetworkStandard, x => x.NetworkStandards);
Extjs.LabelAndComboBoxFor(x => x.BusinessModel, x => x.BusinessModels);
}
using (Extjs.BeginFieldContainer(layout: ExtLayoutEnum.hbox))
{
Extjs.LabelAndTextFor(x => x.Model);
}
using (Extjs.BeginFieldContainer(layout: ExtLayoutEnum.vbox, valign: ExtVBoxAlignEnum.center))
{
Extjs.Button(id: "postexcel", onClick: "events()",buttonText:" ");
}
}
}
<script type="text/javascript">
function events()
{
$(document).ready(function () {
var NetworkStandard = $("input[name = 'NetworkStandard']").val();
var BusinessModel = $("input[name = 'BusinessModel']").val();
var Model = $("input[name = 'Model']").val();
var FinialYearStart = $("input[name = 'FinialYearStart']").val();
var FinialYearEnd = $("input[name = 'FinialYearEnd']").val();
$.post('@BaseController.VirtualDir' + '/SubArea2STIReport/Index?NetworkStandard=' + NetworkStandard + '&BusinessModel=' + BusinessModel + '&Model=' + Model + '&FinialYearStart=' + FinialYearStart + '&FinialYearEnd=' + FinialYearEnd + '', function (s) { eval(s);});
//
function FF_OpenPostDialog(Title, Width, Height, Html, DialogID, NoPost) {
if (DONOTUSE_isCtrl == true) {
DONOTUSE_isCtrl = false;
var win = window.open("/Home/PopUpIndex", "_blank");
if (win.addEventListener) {
win.addEventListener('load', function () { $("body", win.document).append(Html); }, false);
} else if (win.attachEvent) {
win.attachEvent('onload', function () { $("body", win.document).append("<div id='DONOTUSE_POSTFORM'>" + Html + "</div>"); });
}
}
else {
var id = DialogID != undefined ? Ext.id() : DialogID;
var id2 = id + "div";
var win = new Ext.Window({
id: id,
layout: 'fit',
title: Title,
width: Width,
html: "<div id='" + id2 + "'>" + Html + "</div>",
height: Height,
modal: true,
maximizable: true,
autoScroll: false
});
if (NoPost == undefined) {
win.on("afterrender", function (self, eOpts) {
var form = $(self.el.dom).find("form:first");
$.post(form.attr("action"), form.serialize(), function (data) {
$(self.el.dom).find("#" + id2).html(data);
win.setHeight(null);
win.setWidth(null);
win.center();
CloseMask();
});
});
ShowMask();
win.showAt(-2000, -2000);
}
else {
win.show();
}
}
}
});
};
// form , controller
function LL_DownloadExportedFile(Filepath) {
var newForm = $('<form>');
newForm.attr("action", FormatUrl('/SubArea2STIReport/DownloadExportedFile'));
newForm.attr("method", "post");
newForm.attr("target", "hiddenpostif");
var html = "<input type=\"hidden\" id=\"Filepath\" name = \"Filepath\" value=\"" + Filepath + "\" />";
newForm.html(html);
$("body").append(newForm);
newForm.submit();
newForm.remove();
};
</script>
excel controller 다운로드
[HttpPost]
[ActionDescription(" ")]
public ActionResult DownloadExportedFile(string Filepath)
{
byte[] exceldata = System.IO.File.ReadAllBytes(@TempExportDir + "\\" + Filepath + ".xls");
return File(exceldata, "application/x-excel", Filepath +".xls");
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Excel Grep toolExcel Grep tool ■히나가타 ■ 시트 구성 ExcelGrep.cls...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.