目的: V80204: [工作中心報工匯出]鈕 – c# 子視窗呼叫 Master的函式(*.cs)
處理說明: 1>*.cs
//匯出時, 不分頁(par_paging=false), 資料全取
V80204APIController V80204 = new V80204APIController();
DataSet ds = V80204.getGridData_M(false);
//匯出時, 不分頁(par_paging=false), 資料全取
V80204APIController V80204 = new V80204APIController();
DataSet ds = V80204.getGridData_M(false);
1>*.cs
[HttpPost]
public void WC_ALS_OutFile()
{
var c = HttpContext.Current;
NameValueCollection nvc = c.Request.Form;
//匯出時, 不分頁(par_paging=false), 資料全取
V80204APIController V80204 = new V80204APIController();
DataSet ds = V80204.getGridData_M(false);
//DataSet ds = null;
string Tmp_FName = nvc["FName"]; //含 *.xls
string Tmp_sub1_WC = nvc["sub1_WC"];
//string fName = Tmp_FNAME + ".xlsx";
string fName = Tmp_FName;
Workbook wk = null;
MemoryStream stream = new MemoryStream();
string Tmp_Str = "";
string Tmp_Sql = "";
int Tmp_Cnt = 0;
try
{
wk = new Workbook();
Worksheet sheet1 = wk.Worksheets[0];//獲取第一個工作表
//共 9 欄
//AMM單號 工號 件號 件號名稱 製程 製程資料內容 WBS 工單類型 數量 單位 EOECN 專案 機號 起始值 情況處理碼 工單報工統計(小時) 工作中心 工作中心報工統計(小時) 版本
string[] outFieldArray = { "項次","AMM單號","工號", "件號", "件號名稱", "製程",
"製程資料內容", " WBS", "工單類型", "數量", "單位",
"EOECN", "專案","機號","起始值","情況處理碼",
"工單報工統計(小時)","工作中心","工作中心報工統計(小時)"," 版本" };
for (int i = 0; i < outFieldArray.Length; i++)
{
sheet1.Range[myfunc.GetExcelPos(i, 0)].Text = outFieldArray[i];
}
DataTable dt = ds.Tables[1];
Tmp_Cnt = dt.Rows.Count;
//Tmp_Str = "已匯出完成!! ("+Tmp_Cnt.ToString() +"筆) ";
for (int i = 0; i < dt.Rows.Count; i++)
{
sheet1.Range[myfunc.GetExcelPos(0, i + 1)].Text = String.Format("{0:d}", i + 1);
//sheet1.Range[myfunc.GetExcelPos(1, i + 1)].Text = String.Format("{0:yyyy/MM/dd}", DateTime.Parse(dt.Rows[i]["DT"].ToString())); };
// "AMM單號","工號", "件號", "件號名稱", "製程",
sheet1.Range[myfunc.GetExcelPos(1, i + 1)].Text = dt.Rows[i]["AMMNO"].ToString();
sheet1.Range[myfunc.GetExcelPos(2, i + 1)].Text = dt.Rows[i]["SAPNO"].ToString();
sheet1.Range[myfunc.GetExcelPos(3, i + 1)].Text = dt.Rows[i]["PN"].ToString();
sheet1.Range[myfunc.GetExcelPos(4, i + 1)].Text = dt.Rows[i]["PNNAME"].ToString();
sheet1.Range[myfunc.GetExcelPos(5, i + 1)].Text = dt.Rows[i]["MKNO"].ToString();
//"製程資料內容", " WBS", "工單類型", "數量", "單位",
sheet1.Range[myfunc.GetExcelPos(6, i + 1)].Text = dt.Rows[i]["MKDESCPT"].ToString();
sheet1.Range[myfunc.GetExcelPos(7, i + 1)].Text = dt.Rows[i]["WBS"].ToString();
sheet1.Range[myfunc.GetExcelPos(8, i + 1)].Text = dt.Rows[i]["SROTP"].ToString();
sheet1.Range[myfunc.GetExcelPos(9, i + 1)].Text = dt.Rows[i]["QTY"].ToString();
sheet1.Range[myfunc.GetExcelPos(10, i + 1)].Text = dt.Rows[i]["UNIT"].ToString();
//"EOECN", "專案","機號","起始值","情況處理碼",
sheet1.Range[myfunc.GetExcelPos(11, i + 1)].Text = dt.Rows[i]["ECNO"].ToString();
sheet1.Range[myfunc.GetExcelPos(12, i + 1)].Text = dt.Rows[i]["PROJID"].ToString();
sheet1.Range[myfunc.GetExcelPos(13, i + 1)].Text = dt.Rows[i]["ACNO_"].ToString();
sheet1.Range[myfunc.GetExcelPos(14, i + 1)].Text = dt.Rows[i]["STARTVAL"].ToString();
sheet1.Range[myfunc.GetExcelPos(15, i + 1)].Text = dt.Rows[i]["CNDPROCCODE"].ToString();
// "工單報工統計(小時)","工作中心","工作中心報工統計(小時)"," 版本"
sheet1.Range[myfunc.GetExcelPos(16, i + 1)].Text = dt.Rows[i]["ALS_HR_"].ToString();
//sheet1.Range[myfunc.GetExcelPos(17, i + 1)].Text = dt.Rows[i]["CURR_ARBPL_"].ToString(); //目前工作中心
sheet1.Range[myfunc.GetExcelPos(17, i + 1)].Text = Tmp_sub1_WC; //子視窗.工作中心
//工作中心報工統計(小時)
Tmp_Sql = " SELECT round((sum(HOUR_WORK)+sum(HOUR_OT))/60,2) WCHR "
+ " FROM "
+ " ( "
+ " SELECT JCN, ACT, WC, HOUR_WORK, work_ID, HOUR_OT FROM HOUR.ALS_HOUR_COMP@ALS_HOUR WHERE WC = " + myfunc.AA(Tmp_sub1_WC) + " AND JCN = '0000' || " + myfunc.AA(dt.Rows[i]["SAPNO"].ToString())
+ " union all "
+ " SELECT JCN, ACT, WC, HOUR_WORK, work_ID, HOUR_OT FROM HOUR.ALS_HOUR_COMP_HISTORY@ALS_HOUR WHERE WC = " + myfunc.AA(Tmp_sub1_WC) + " AND JCN = '0000' || " + myfunc.AA(dt.Rows[i]["SAPNO"].ToString())
+ " ) "
+ " GROUP BY JCN,WC ";
Tmp_Str = myfunc.SqlValue(Tmp_Sql);
sheet1.Range[myfunc.GetExcelPos(18, i + 1)].Text = Tmp_Str; //工作中心報工統計(小時)
//版本
Tmp_Sql = " SELECT ED "
+ " FROM AMM_EDLST "
+ " WHERE (AMMNO, ITM) in (select AMMNO, max(to_number(ITM)) from AMM_EDLST group by AMMNO ) "
+ " AND AMMNO = " + myfunc.AA(dt.Rows[i]["AMMNO"].ToString());
Tmp_Str = myfunc.SqlValue(Tmp_Sql);
sheet1.Range[myfunc.GetExcelPos(19, i + 1)].Text = Tmp_Str; //版本
// end of for
} // end of for (int i = 0; i < dt.Rows.Count; i++)
sheet1.AllocatedRange.AutoFitColumns();
wk.SaveToStream(stream, FileFormat.Version2007);
} //end of try
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
finally
{
wk.Dispose();
}
//Tmp_Cnt = 6;
Tmp_Str = "已匯出完成!! (" + Tmp_Cnt.ToString() + "筆) <br>"
+ "檔案名稱(" + Tmp_FName + ")";
HttpCookie MyCookie = new HttpCookie("EX_DFile", HttpUtility.UrlEncode(Tmp_Str));
HttpContext.Current.Response.Cookies.Add(MyCookie);
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=\"" + HttpUtility.UrlEncode(fName, System.Text.Encoding.UTF8) + "\"");
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Current.Response.BinaryWrite(stream.ToArray());
HttpContext.Current.Response.End();
} // end of ExportdFile
2>*.js
//工作中心報工匯出
function WC_ALS_OutFile() {
var np = s_JSON('s_form'); //TMFunction.js, 組合form上的查詢條件為json參數傳遞
np["FName"] = "V80204_工作中心報表匯出.xlsx";
np["sub1_WC"] = Ext.getCmp("sub1_WC").getValue();
console.log("np:", np);
console.log("FName: ", np.FName);
f_downloadFile('EX_DFile', '../api/V80204AAPI/WC_ALS_OutFile', np, 'POST', function () {
var r = r_cookies('EX_DFile');
mysuccessalert(r);
});
};
沒有留言:
張貼留言