コード例 #1
0
        protected void btnDownloadTemplate_Click(object sender, EventArgs e)
        {
            string path = g_Config["WordTemplatePath"];
            string filenamewithoutextension = null;
            string datafilename             = null;
            string originalfilename         = null;

            if ((myReport.WordFile != null) && File.Exists(path + myReport.WordFile.WordFileName))
            {
                filenamewithoutextension = Path.GetFileNameWithoutExtension(myReport.WordFile.WordFileName);
                if (filenamewithoutextension.LastIndexOf('.') > 0)
                {
                    filenamewithoutextension = filenamewithoutextension.Substring(0, filenamewithoutextension.LastIndexOf('.'));
                }
                datafilename     = filenamewithoutextension + ".xlsx";
                originalfilename = myReport.WordFile.OrigFileName;
            }
            else
            {
                int svid = Convert.ToInt32(this.ddlQueryName.SelectedValue);
                CUSTOMRP.Model.WORDTEMPLATE wordtemplate = WebHelper.bllWORDTEMPLATE.GetModelBySVID(me.ID, svid, me.ID);
                if (wordtemplate != null)
                {
                    filenamewithoutextension = Path.GetFileNameWithoutExtension(wordtemplate.TemplateFileName);
                    datafilename             = wordtemplate.DataFileName;
                    originalfilename         = wordtemplate.TemplateFileName;
                }
            }

            if (filenamewithoutextension == null)
            {
                this.lblJavascript.Text = String.Format("<script type=\"text/javascript\">alert(\"{0}\");</script>", AppNum.ErrorMsg.filenotfounderror);
                return;
            }

            MemoryStream filestream = MailMerge.ChangeDataFilePath(path + myReport.WordFile.WordFileName, datafilename);

            Context.Response.ContentType = "application/octet-stream";
            //Encode filename according to RFC5987
            //Response.AddHeader("Content-Disposition", "attachment; filename=\"" + originalfilename + "\"");
            Context.Response.AddHeader("Content-Disposition", String.Format("attachment; filename=\"{0}\"; filename*=utf-8''{1}", originalfilename, HttpUtility.UrlPathEncode(originalfilename)));
            Context.Response.AddHeader("Content-Length", filestream.Length.ToString());
            byte[] fileBuffer = new byte[filestream.Length];
            filestream.Read(fileBuffer, 0, (int)filestream.Length);
            filestream.Close();
            Context.Response.BinaryWrite(fileBuffer);
            p_fSuppressRender = true;
            HttpContext.Current.ApplicationInstance.CompleteRequest();
        }
コード例 #2
0
ファイル: WORDTEMPLATE.cs プロジェクト: lsfv/queryreport
        public int Add(CUSTOMRP.Model.WORDTEMPLATE model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("INSERT INTO [WORDTEMPLATE](");
            strSql.Append("[WORDTEMPLATEName],[Description],[VIEWID],[TemplateFileName],[DataFileName],[ModifyDate],[ModifyUser],[CreateDate],[CreateUser]");
            strSql.Append(") VALUES (");
            strSql.Append("@WORDTEMPLATEName,@Description,@VIEWID,@TemplateFileName,@DataFileName,@ModifyDate,@ModifyUser,@CreateDate,@CreateUser");
            strSql.Append(");select @@IDENTITY");
            SqlParameter[] parameters = new SqlParameter[]
            {
                new SqlParameter("@WORDTEMPLATEName", SqlDbType.NVarChar, 50),
                new SqlParameter("@Description", SqlDbType.NVarChar, 50),
                new SqlParameter("@VIEWID", SqlDbType.Int, 4),
                new SqlParameter("@TemplateFileName", SqlDbType.NVarChar, 50),
                new SqlParameter("@DataFileName", SqlDbType.NVarChar, 200),
                new SqlParameter("@ModifyDate", SqlDbType.DateTime),
                new SqlParameter("@ModifyUser", SqlDbType.Int, 4),
                new SqlParameter("@CreateDate", SqlDbType.DateTime),
                new SqlParameter("@CreateUser", SqlDbType.Int, 4),
            };
            parameters[0].Value = model.WordTemplateName;
            parameters[1].Value = model.Description;
            parameters[2].Value = model.ViewID;
            parameters[3].Value = model.TemplateFileName;
            parameters[4].Value = model.DataFileName;
            parameters[5].Value = model.ModifyDate;
            parameters[6].Value = model.ModifyUser;
            parameters[7].Value = model.CreateDate;
            parameters[8].Value = model.CreateUser;

            object obj = DbHelperSQL.GetSingle(model.ModifyUser, strSql.ToString(), parameters);

            if (obj == null)
            {
                return(0);
            }
            else
            {
                return(Convert.ToInt32(obj));
            }
        }
コード例 #3
0
ファイル: WORDTEMPLATE.cs プロジェクト: lsfv/queryreport
        public bool Update(CUSTOMRP.Model.WORDTEMPLATE model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("UPDATE [WORDTEMPLATE] SET ");
            strSql.Append("[WORDTEMPLATEName] = @WORDTEMPLATEName,");
            strSql.Append("[Description] = @Description,");
            strSql.Append("[TemplateFileName] = @TemplateFileName,");
            strSql.Append("[DataFileName] = @DataFileName,");
            strSql.Append("[ModifyDate] = @ModifyDate,");
            strSql.Append("[ModifyUser] = @ModifyUser");
            strSql.Append(" WHERE [VIEWID] = @VIEWID");
            SqlParameter[] parameters = new SqlParameter[]
            {
                new SqlParameter("@WORDTEMPLATEName", SqlDbType.NVarChar, 50),
                new SqlParameter("@Description", SqlDbType.NVarChar, 50),
                new SqlParameter("@TemplateFileName", SqlDbType.NVarChar, 100),
                new SqlParameter("@DataFileName", SqlDbType.NVarChar, 100),
                new SqlParameter("@ModifyDate", SqlDbType.DateTime),
                new SqlParameter("@ModifyUser", SqlDbType.Int, 4),
                new SqlParameter("@VIEWID", SqlDbType.Int, 4),
            };
            parameters[0].Value = model.WordTemplateName;
            parameters[1].Value = model.Description;
            parameters[2].Value = model.TemplateFileName;
            parameters[3].Value = model.DataFileName;
            parameters[4].Value = model.ModifyDate;
            parameters[5].Value = model.ModifyUser;
            parameters[6].Value = model.ViewID;

            int rows = DbHelperSQL.ExecuteSql(model.ModifyUser, strSql.ToString(), parameters);

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #4
0
ファイル: WORDTEMPLATE.cs プロジェクト: lsfv/queryreport
 /// <summary>
 /// Convert DataRow to POCO object of WordTemplate
 /// </summary>
 /// <param name="row">DataRow to be converted</param>
 /// <returns></returns>
 private CUSTOMRP.Model.WORDTEMPLATE DataRowToModel(DataRow row)
 {
     CUSTOMRP.Model.WORDTEMPLATE model = new CUSTOMRP.Model.WORDTEMPLATE();
     if (row != null)
     {
         if (row["WORDTEMPLATEID"] != null)
         {
             model.WordTemplateID = Convert.ToInt32(row["WORDTEMPLATEID"]);
         }
         if (row["WORDTEMPLATEName"] != null)
         {
             model.WordTemplateName = Convert.ToString(row["WORDTEMPLATEName"]);
         }
         if (row["Description"] != null)
         {
             model.Description = Convert.ToString(row["Description"]);
         }
         if (row["VIEWID"] != null)
         {
             model.ViewID = Convert.ToInt32(row["VIEWID"]);
         }
         if (row["TemplateFileName"] != null)
         {
             model.TemplateFileName = Convert.ToString(row["TemplateFileName"]);
         }
         if (row["DataFileName"] != null)
         {
             model.DataFileName = Convert.ToString(row["DataFileName"]);
         }
         if (row["ModifyDate"] != null)
         {
             model.ModifyDate = Convert.ToDateTime(row["ModifyDate"]);
         }
         if (row["ModifyUser"] != null)
         {
             model.ModifyUser = Convert.ToInt32(row["ModifyUser"]);
         }
         if (row["CreateDate"] != null)
         {
             model.CreateDate = Convert.ToDateTime(row["CreateDate"]);
         }
         if (row["CreateUser"] != null)
         {
             model.CreateUser = Convert.ToInt32(row["CreateUser"]);
         }
         if (row["FileCount"] != null)
         {
             model.FileCount = Convert.ToInt32(row["FileCount"]);
         }
         if (row["SOURCEVIEWNAME"] != null)
         {
             model.SOURCEVIEWNAME = Convert.ToString(row["SOURCEVIEWNAME"]);
         }
         if (row["DATABASEID"] != null)
         {
             model.DATABASEID = Convert.ToInt32(row["DATABASEID"]);
         }
         if (row["SVDESC"] != null)
         {
             model.SVDESC = Convert.ToString(row["SVDESC"]);
         }
         if (row["SOURCETYPE"] != null)
         {
             model.SOURCETYPE = Convert.ToInt32(row["SOURCETYPE"]);
         }
         if (row["VIEWLEVEL"] != null)
         {
             model.VIEWLEVEL = Convert.ToString(row["VIEWLEVEL"]);
         }
     }
     return(model);
 }
コード例 #5
0
        protected void btnDownloadDatafile_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrWhiteSpace(this.txtReportName.Text))
            {
                this.lblJavascript.Text = String.Format("<script type=\"text/javascript\">alert(\"{0}\");</script>",
                                                        String.Format(AppNum.ErrorMsg.fieldcannotbeempty, "Report Name"));
                return;
            }

            #region Get ColumnInfo
            CUSTOMRP.Model.SOURCEVIEW sv = WebHelper.bllSOURCEVIEW.GetModel(me.ID, Int32.Parse(this.ddlQueryName.SelectedValue));
            List <CUSTOMRP.Model.SOURCEVIEWCOLUMN> svclist = WebHelper.bllSOURCEVIEWCOLUMN.GetModelsForSourceView(me.ID, sv.ID).OrderBy(x => x.DisplayName).ToList();
            string[] colnames = svclist.Select(x => x.DisplayName).ToArray();

            switch (sv.SourceType)
            {
            case CUSTOMRP.Model.SOURCEVIEW.SourceViewType.View:
            case CUSTOMRP.Model.SOURCEVIEW.SourceViewType.Table:
            {
                try
                {
                    columninfos = CUSTOMRP.BLL.AppHelper.GetColumnInfoForTblView(me.ID, me.DatabaseNAME, sv.TBLVIEWNAME);
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.ToString());
                    columninfos             = new List <CUSTOMRP.Model.ColumnInfo>();
                    this.lblJavascript.Text = String.Format("<script type=\"text/javascript\">alert('Error in retrieving columns for [{0}]. Please check view defination.');</script>", sv.TBLVIEWNAME);
                }
                if (colnames == null)
                {
                    colnames = CUSTOMRP.BLL.AppHelper.GetColumnNamesForTblView(me.ID, me.DatabaseNAME, sv.TBLVIEWNAME);
                }
            }
            break;

            case CUSTOMRP.Model.SOURCEVIEW.SourceViewType.StoredProc:
            {
                try
                {
                    columninfos = CUSTOMRP.BLL.AppHelper.GetColumnInfoForStoredProc(me.ID, me.DatabaseNAME, sv.ID);
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.ToString());
                    columninfos             = new List <CUSTOMRP.Model.ColumnInfo>();
                    this.lblJavascript.Text = String.Format("<script type=\"text/javascript\">alert('Error in retrieving columns for [{0}]. Please check stored proc defination.');</script>", sv.TBLVIEWNAME);
                }
                if (colnames == null)
                {
                    colnames = CUSTOMRP.BLL.AppHelper.GetColumnNamesForStoredProc(me.ID, me.DatabaseNAME, sv.TBLVIEWNAME);
                }
            }
            break;
            }
            // Filter result to only columns that is requested
            columninfos = columninfos.Where(x => colnames.Contains(x.ColName)).ToList();
            #endregion Get ColumnInfo

            StringBuilder selectclause = new StringBuilder("TOP 5 ");

            //v1.2.0 Fai 2017.01.11 - Avoid to throw Exception if columninfos have no any items - Begin
            //selectclause.Append(String.Join(",", columninfos.Select(x => "[" + x.DisplayName + "]").ToArray()));
            if (columninfos.Select(x => "[" + x.DisplayName + "]").ToArray().Length > 0)
            {
                selectclause.Append(String.Join(",", columninfos.Select(x => "[" + x.DisplayName + "]").ToArray()));
            }
            else
            {
                selectclause.Append("*");
            }
            //v1.2.0 Fai 2017.01.11 - Avoid to throw Exception if columninfos have no any items - End

            //v1.2.0 - Cheong - 2016/07/04 - Add option to hide duplicate items
            //DataTable dt = CUSTOMRP.BLL.AppHelper.getDataForReport(sv.ID, me.DatabaseNAME, selectclause.ToString(), CUSTOMRP.BLL.AppHelper.sql_plus(sv.ID, me), "", "", true);
            DataTable dt = CUSTOMRP.BLL.AppHelper.getDataForReport(me.ID, sv.ID, me.DatabaseNAME, selectclause.ToString(), CUSTOMRP.BLL.AppHelper.sql_plus(sv.ID, me), "", "", myReport.fHideDuplicate);

            NPOI.XSSF.UserModel.XSSFWorkbook XSSFworkbook = NPOIHelper.GetWorkbookAsMailMergeDataSource(dt);

            string path = g_Config["WordTemplatePath"];
            string filenamewithoutextension = null;
            string datafilename             = null;
            if ((myReport.WordFile != null) && File.Exists(path + myReport.WordFile.WordFileName))
            {
                filenamewithoutextension = Path.GetFileNameWithoutExtension(myReport.WordFile.WordFileName);
                if (filenamewithoutextension.LastIndexOf('.') > 0)
                {
                    filenamewithoutextension = filenamewithoutextension.Substring(0, filenamewithoutextension.LastIndexOf('.'));
                }
                datafilename = filenamewithoutextension + ".xlsx";
            }
            else
            {
                CUSTOMRP.Model.WORDTEMPLATE wordtemplate = WebHelper.bllWORDTEMPLATE.GetModelBySVID(me.ID, sv.ID, me.ID);
                if (wordtemplate != null)
                {
                    filenamewithoutextension = Path.GetFileNameWithoutExtension(wordtemplate.TemplateFileName);
                    datafilename             = wordtemplate.DataFileName;
                }
            }

            if (datafilename == null)
            {
                this.lblJavascript.Text = String.Format("<script type=\"text/javascript\">alert(\"{0}\");</script>", AppNum.ErrorMsg.parameter_error);
                return;
            }

            string folder = PathHelper.getTempFolderName();
            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            string filePath = folder + PathHelper.getSafePath(datafilename);
            try
            {
                using (FileStream outFs = new FileStream(filePath, FileMode.Create))
                {
                    XSSFworkbook.Write(outFs);
                    //CA2202
                    //outFs.Close();
                }

                FileInfo file = new System.IO.FileInfo(filePath);

                Response.ContentType = "application/octet-stream";
                //Encode filename according to RFC5987
                //Response.AddHeader("Content-Disposition", "attachment; filename=\"" + datafilename + "\"");
                Context.Response.AddHeader("Content-Disposition", String.Format("attachment; filename=\"{0}\"; filename*=utf-8''{1}", datafilename, HttpUtility.UrlPathEncode(datafilename)));
                Response.AddHeader("Content-Length", file.Length.ToString());
                Response.WriteFile(file.FullName);
                Response.Flush();
                p_fSuppressRender = true;
                HttpContext.Current.ApplicationInstance.CompleteRequest();
            }
            finally
            {
                if (File.Exists(filePath))
                {
                    File.Delete(filePath);
                }
            }
        }