1) Latest Excel Sheet

Admin/Attendance.aspx.cs


download_XL_Click  please find and replace this function


protected void download_XL_Click(object sender, EventArgs e)
    {
        if (ddlusers.SelectedValue == "0" && txt_from.Text != "" && txt_to.Text != "")
        {
            try
            {

                string[] col1 = { "@dateFrom", "@dateTo" };
                object[] val1 = { txt_from.Text, txt_to.Text };
                DataSet ds = dal.getDataSet("USPAttendanceReport", col1, val1);
                ClosedXML.Excel.XLWorkbook wb = new ClosedXML.Excel.XLWorkbook();
                var ws = wb.Worksheets.Add("Attendance");
                int col = ds.Tables[1].Rows.Count * 2;
                ws.Cell(1, 1).Value = "Attendance from " + txt_from.Text + " to " + txt_to.Text;
                ws.Range(1, 1, 1, col + 1).Merge();
                //ws.Range(ws.Cell(row, col++), ws.Cell(row, col++)).Merge();
                ws.Range(1, 1, 1, col + 1).AddToNamed("Titles");
                // styles
                var titlesStyle = wb.Style;
                titlesStyle.Font.Bold = true;
                titlesStyle.Alignment.Horizontal = ClosedXML.Excel.XLAlignmentHorizontalValues.Left;
                titlesStyle.Fill.BackgroundColor = ClosedXML.Excel.XLColor.GreenPigment;

                // style titles row
                wb.NamedRanges.NamedRange("Titles").Ranges.Style = titlesStyle;
                ws.Cell(2, 1).Value = "dd-mm-yyyy";
                ws.Cell(2, 1).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.GreenPigment;
                int k = 2;
                //Table Created for manage leave for each Employee start
                DataTable dtEmployee = new DataTable();
                dtEmployee.Columns.Add(new DataColumn("srno", typeof(int)));
                dtEmployee.Columns.Add(new DataColumn("name", typeof(string)));
                dtEmployee.Columns.Add(new DataColumn("FFF933-Counter", typeof(int)));  //Time between 9:30 to 10:00   Calculation 1/4 = 0.25 days leave after 6 
                dtEmployee.Columns.Add(new DataColumn("FFB233-Counter", typeof(int)));  //Time between 10:01 to 10:30  Calculation 1/2 = 0.50 days leave
                dtEmployee.Columns.Add(new DataColumn("FF8633-Counter", typeof(int)));  //Time between 10:31 to 11:30  Calculation 1 days leave
                dtEmployee.Columns.Add(new DataColumn("FF6E33-Counter", typeof(int)));  //Time between 11:31 to 01:59  Calculation 2 days  leave
                dtEmployee.Columns.Add(new DataColumn("9AE33C-Counter", typeof(int)));  //Time after 2:00 PM or 2:00 PM Calculation 2 days  leave
                dtEmployee.Columns.Add(new DataColumn("FF33F6-Counter", typeof(int)));  ////For Spend time less than 9 hours Calculation 1/2 = 0.50 days  leave
                //Table Created for manage leave for each Employee end
                for (int i = 0; i < ds.Tables[1].Rows.Count; i++)
                {
                    DataRow row = dtEmployee.NewRow();
                    row["srno"] = Convert.ToInt32(ds.Tables[1].Rows[i]["srno"]);
                    row["name"] = ds.Tables[1].Rows[i]["name"].ToString();
                    row["FFF933-Counter"] = 0;
                    row["FFB233-Counter"] = 0;
                    row["FF8633-Counter"] = 0;
                    row["FF6E33-Counter"] = 0;
                    row["9AE33C-Counter"] = 0;
                    row["FF33F6-Counter"] = 0;
                    dtEmployee.Rows.Add(row);
                    ws.Cell(2, k).Value = ds.Tables[1].Rows[i]["name"].ToString();
                    ws.Cell(2, k).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.GreenPigment;
                    ws.Range(2, k, 2, k + 1).Merge();
                    k = k + 2;

                }

                ws.Cell(3, 1).Value = "";
                ws.Cell(3, 1).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.GreenPigment;
                k = 2;
                for (int i = 0; i < ds.Tables[1].Rows.Count; i++)
                {
                    ws.Cell(3, k).Value = "In";
                    ws.Cell(3, k).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.GreenPigment;
                    ws.Cell(3, k + 1).Value = "Out";
                    ws.Cell(3, k + 1).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.GreenPigment;
                    k = k + 2;

                }
                //For display date start
                k = 4;
                //double[] totalSalary = new double[ds.Tables[0].Rows.Count];
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)   //days between two selected date loop using datepicker
                {
                    ws.Cell(k, 1).Value = ds.Tables[0].Rows[i]["Coming_Time"].ToString();
                    ws.Cell(k, 1).Style.NumberFormat.Format = "dd-mm-yy";
                    ws.Column(1).AdjustToContents();
                    int columnCtr = 2;
                    for (int ctrEmployee = 0; ctrEmployee < ds.Tables[1].Rows.Count; ctrEmployee++)
                    {
                        //int perDayCostForParticularEmployee = Convert.ToInt32(ds.Tables[1].Rows[ctrEmployee]["per_cost"]);  //Per day cost for each employee
                        //int perDayCostForParticularEmployeeSelected = 0;
                        DataRow[] rowsFiltered = ds.Tables[2].Select("Coming_Time='" + ds.Tables[0].Rows[i]["Coming_Time"].ToString() + "' AND User_Id=" + Convert.ToInt32(ds.Tables[1].Rows[ctrEmployee]["srno"]));

                        //DataRow[] salaryFound = ds.Tables[1].Select("srno=" + Convert.ToInt32(ds.Tables[1].Rows[ctrEmployee]["srno"]));
                        //foreach (DataRow rowss in salaryFound)
                        //{
                        //    perDayCostForParticularEmployeeSelected = Convert.ToInt32(rowss.ItemArray[2].ToString());
                        //}

                            int presenetFlag = 0;
                        foreach (DataRow rowss in rowsFiltered)
                        {
                            presenetFlag = 1;
                            ws.Cell(k, columnCtr).Value = rowss.ItemArray[2].ToString();   //Coming Time
                            ws.Cell(k, columnCtr).Style.NumberFormat.Format = "h:mm AM/PM";
                            
                            if(rowss.ItemArray[2].ToString()!="" && rowss.ItemArray[2].ToString().Contains("AM"))
                            {
                                if((rowss.ItemArray[2].ToString().Split(':')[0]=="9" && Convert.ToInt32(rowss.ItemArray[2].ToString().Split(':')[1].Replace("AM",""))>30)
                                    || (rowss.ItemArray[2].ToString().Split(':')[0] == "10" && Convert.ToInt32(rowss.ItemArray[2].ToString().Split(':')[1].Replace("AM", "")) ==0))
                                {
                                    DataRow[] rows = dtEmployee.Select("srno =" + Convert.ToInt32(rowss.ItemArray[0]));
                                    if (rows.Length > 0)
                                    {
                                        foreach (DataRow row in rows)
                                        {

                                            row[2] = Convert.ToInt32((row[2] == null) ? 0 : row[2]) + 1;
                                            dtEmployee.AcceptChanges();
                                            row.SetModified();
                                        }
                                    }
                                    ws.Cell(k, columnCtr).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#FFF933");//Time between 9:30 to 10:00
                                }

                                else if (rowss.ItemArray[2].ToString().Split(':')[0] == "10" && Convert.ToInt32(rowss.ItemArray[2].ToString().Split(':')[1].Replace("AM", "")) <=30)
                                {


                                    DataRow[] rows = dtEmployee.Select("srno =" + Convert.ToInt32(rowss.ItemArray[0]));
                                    if (rows.Length > 0)
                                    {
                                        foreach (DataRow row in rows)
                                        {

                                            row[3] = Convert.ToInt32((row[3] == null) ? 0 : row[3]) + 1;
                                            dtEmployee.AcceptChanges();
                                            row.SetModified();
                                        }
                                    }
                                    ws.Cell(k, columnCtr).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#FFB233");//Time between 10:01 to 10:30
                                }

                                else if ((rowss.ItemArray[2].ToString().Split(':')[0] == "10" && Convert.ToInt32(rowss.ItemArray[2].ToString().Split(':')[1].Replace("AM", "")) > 30) || (rowss.ItemArray[2].ToString().Split(':')[0] == "11" && Convert.ToInt32(rowss.ItemArray[2].ToString().Split(':')[1].Replace("AM", "")) <= 30))
                                {
                                    DataRow[] rows = dtEmployee.Select("srno =" + Convert.ToInt32(rowss.ItemArray[0]));
                                    if (rows.Length > 0)
                                    {
                                        foreach (DataRow row in rows)
                                        {

                                            row[4] = Convert.ToInt32((row[4] == null) ? 0 : row[4]) + 1;
                                            dtEmployee.AcceptChanges();
                                            row.SetModified();
                                        }
                                    }
                                    ws.Cell(k, columnCtr).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#FF8633");//Time between 10:31 to 11:30
                                }

                                //else if ((rowss.ItemArray[2].ToString().Split(':')[0] == "10" && Convert.ToInt32(rowss.ItemArray[2].ToString().Split(':')[1].Replace("AM", "")) > 30) || (rowss.ItemArray[2].ToString().Split(':')[0] == "11" && Convert.ToInt32(rowss.ItemArray[2].ToString().Split(':')[1].Replace("AM", "")) <= 30))
                                //{
                                //    ws.Cell(k, columnCtr).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#FF8633");//Time between 10:31 to 11:30
                                //}

                                else if(Convert.ToInt32(rowss.ItemArray[2].ToString().Split(':')[0]) >= 11)
                                {
                                    DataRow[] rows = dtEmployee.Select("srno =" + Convert.ToInt32(rowss.ItemArray[0]));
                                    if (rows.Length > 0)
                                    {
                                        foreach (DataRow row in rows)
                                        {

                                            row[5] = Convert.ToInt32((row[5] == null) ? 0 : row[5]) + 1;
                                            dtEmployee.AcceptChanges();
                                            row.SetModified();
                                        }
                                    }
                                    ws.Cell(k, columnCtr).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#FF6E33");//Time between 11:31 to 12:00
                                }
                            }
                            else if(rowss.ItemArray[2].ToString() != "" && rowss.ItemArray[2].ToString().Contains("PM"))
                            {
                                if (Convert.ToInt32(rowss.ItemArray[2].ToString().Split(':')[0]) == 12 || Convert.ToInt32(rowss.ItemArray[2].ToString().Split(':')[0])<2)
                                {
                                    DataRow[] rows = dtEmployee.Select("srno =" + Convert.ToInt32(rowss.ItemArray[0]));
                                    if (rows.Length > 0)
                                    {
                                        foreach (DataRow row in rows)
                                        {

                                            row[5] = Convert.ToInt32((row[5] == null) ? 0 : row[5]) + 1;
                                            dtEmployee.AcceptChanges();
                                            row.SetModified();
                                        }
                                    }
                                    ws.Cell(k, columnCtr).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#FF6E33");//Time between 12:01 to 1:59
                                }
                                else if (Convert.ToInt32(rowss.ItemArray[2].ToString().Split(':')[0]) >= 2)
                                {
                                    DataRow[] rows = dtEmployee.Select("srno =" + Convert.ToInt32(rowss.ItemArray[0]));
                                    if (rows.Length > 0)
                                    {
                                        foreach (DataRow row in rows)
                                        {

                                            row[6] = Convert.ToInt32((row[6] == null) ? 0 : row[6]) + 1;
                                            dtEmployee.AcceptChanges();
                                            row.SetModified();
                                        }
                                    }
                                    ws.Cell(k, columnCtr).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#9AE33C");//Time after 2:00 PM
                                }
                            }
                            ws.Cell(k, columnCtr + 1).Value = rowss.ItemArray[3].ToString();    //Going Time
                            ws.Cell(k, columnCtr + 1).Style.NumberFormat.Format = "h:mm AM/PM";
                            
                            if (Convert.ToInt32(Convert.ToString(rowss.ItemArray[5])==""?"0": Convert.ToString(rowss.ItemArray[5])) <9)
                            {

                                DataRow[] rows = dtEmployee.Select("srno =" + Convert.ToInt32(rowss.ItemArray[0]));
                                if (rows.Length > 0)
                                {
                                    foreach (DataRow row in rows)
                                    {

                                        row[7] = Convert.ToInt32((row[7] == null) ? 0 : row[7]) + 1;
                                        dtEmployee.AcceptChanges();
                                        row.SetModified();
                                    }
                                }
                                ws.Cell(k, columnCtr + 1).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#FF33F6");//For Spend time less than 9 hours
                            }
                        }
                        if(presenetFlag==0)
                        {
                            ws.Cell(k, columnCtr).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#3CB8E3");//In Case Of Leave
                            ws.Cell(k, columnCtr+1).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#3CB8E3");//In Case Of Leave
                            
                        }
                        

                        columnCtr = columnCtr + 2;


                    }

                    if (i < ds.Tables[0].Rows.Count - 1)
                    {
                        int checkForLeave = Convert.ToInt32(ds.Tables[0].Rows[i + 1]["Coming_Time"].ToString().Split('/')[0]) - Convert.ToInt32(ds.Tables[0].Rows[i]["Coming_Time"].ToString().Split('/')[0]);
                        if (checkForLeave > 1)
                        {
                            for (int j = 0; j < checkForLeave - 1; j++)
                            {
                                k = k + 1;
                                ws.Range(k, 1, k, col + 1).Merge().Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.Red;
                            }
                        }
                        k = k + 1;
                    }

                }

                int columnCtr1 = 1;
                k = k + 2;
                ws.Cell(k, columnCtr1).Value = "Deducted Leave";
                columnCtr1 = columnCtr1 + 1;
                double totalLeave = 0;
                for (int i=0; i<dtEmployee.Rows.Count;i++)
                {
                    totalLeave = 0;
                    ws.Cell(k, columnCtr1).Value = dtEmployee.Rows[i]["name"];
                    ws.Range(k, columnCtr1, k, columnCtr1 + 1).Merge();
                    ws.Cell(k, columnCtr1+1).Comment.Style.Alignment.SetAutomaticSize();

                    ws.Cell(k+1, columnCtr1).Value = dtEmployee.Rows[i]["FFF933-Counter"];
                    ws.Cell(k + 1, columnCtr1).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#FFF933");
                    totalLeave += (Convert.ToInt32(dtEmployee.Rows[i]["FFF933-Counter"]) > 6 ? ((double)(Convert.ToInt32(dtEmployee.Rows[i]["FFF933-Counter"]) - 6) * (double)0.25) : 0);
                    ws.Cell(k + 1, columnCtr1+1).Value = (Convert.ToInt32(dtEmployee.Rows[i]["FFF933-Counter"])>6 ? ((double)(Convert.ToInt32(dtEmployee.Rows[i]["FFF933-Counter"])-6)*(double)0.25):0);

                    ws.Cell(k + 2, columnCtr1).Value = dtEmployee.Rows[i]["FFB233-Counter"];
                    ws.Cell(k + 2, columnCtr1).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#FFB233");
                    totalLeave += ((double)(Convert.ToInt32(dtEmployee.Rows[i]["FFB233-Counter"])) * (double)0.50);
                    ws.Cell(k + 2, columnCtr1 + 1).Value = ((double)(Convert.ToInt32(dtEmployee.Rows[i]["FFB233-Counter"])) * (double)0.50);

                    ws.Cell(k + 3, columnCtr1).Value = dtEmployee.Rows[i]["FF8633-Counter"];
                    ws.Cell(k + 3, columnCtr1).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#FF8633");
                    totalLeave += ((double)(Convert.ToInt32(dtEmployee.Rows[i]["FF8633-Counter"])) * (double)1);
                    ws.Cell(k + 3, columnCtr1 + 1).Value = ((double)(Convert.ToInt32(dtEmployee.Rows[i]["FF8633-Counter"])) * (double)1);

                    ws.Cell(k + 4, columnCtr1).Value = dtEmployee.Rows[i]["FF6E33-Counter"];
                    ws.Cell(k + 4, columnCtr1).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#FF6E33");
                    totalLeave += ((double)(Convert.ToInt32(dtEmployee.Rows[i]["FF6E33-Counter"])) * (double)2);
                    ws.Cell(k + 4, columnCtr1 + 1).Value = ((double)(Convert.ToInt32(dtEmployee.Rows[i]["FF6E33-Counter"])) * (double)2);

                    ws.Cell(k + 5, columnCtr1).Value = dtEmployee.Rows[i]["9AE33C-Counter"];
                    ws.Cell(k + 5, columnCtr1).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#9AE33C");
                    totalLeave += ((double)(Convert.ToInt32(dtEmployee.Rows[i]["9AE33C-Counter"])) * (double)2);
                    ws.Cell(k + 5, columnCtr1 + 1).Value = ((double)(Convert.ToInt32(dtEmployee.Rows[i]["9AE33C-Counter"])) * (double)2);

                    ws.Cell(k + 6, columnCtr1).Value = dtEmployee.Rows[i]["FF33F6-Counter"];
                    ws.Cell(k + 6, columnCtr1).Style.Fill.BackgroundColor = ClosedXML.Excel.XLColor.FromHtml("#FF33F6");
                    totalLeave += ((double)(Convert.ToInt32(dtEmployee.Rows[i]["FF33F6-Counter"])) * (double)0.50);
                    ws.Cell(k + 6, columnCtr1 + 1).Value = ((double)(Convert.ToInt32(dtEmployee.Rows[i]["FF33F6-Counter"])) * (double)0.50);

                    ws.Cell(k + 8, columnCtr1).Value = "Total Leave";
                    ws.Cell(k + 8, columnCtr1+1).Value = totalLeave;

                    columnCtr1 = columnCtr1 + 2;
                    //ws.Cell(k, columnCtr).Style.NumberFormat.Format = "h:mm AM/PM";
                }

                //For display date end

                //ws.Rows().AdjustToContents();
                //ws.Columns().AdjustToContents();
                // Prepare the response
                HttpResponse httpResponse = Response;
                httpResponse.Clear();
                httpResponse.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                //Provide you file name here
                httpResponse.AddHeader("content-disposition", "attachment;filename=\"" + "Attendance" + ".xlsx\"");
                // Flush the workbook to the Response.OutputStream
                using (MemoryStream memoryStream = new MemoryStream())
                {
                    wb.SaveAs(memoryStream);
                    memoryStream.WriteTo(httpResponse.OutputStream);
                    memoryStream.Close();
                }

                HttpContext.Current.Response.Flush(); // Sends all currently buffered output to the client.
                HttpContext.Current.Response.SuppressContent = true;  // Gets or sets a value indicating whether to send HTTP content to the client.
                HttpContext.Current.ApplicationInstance.CompleteRequest();
            }
            catch(Exception ex)
            {

            }

        }
        else
        {
            DataSet dataset = Session["table"] as DataSet;
            ClosedXML.Excel.XLWorkbook wbook = new ClosedXML.Excel.XLWorkbook();
            for (int i = 0; i < dataset.Tables.Count; i++)
            {
                wbook.Worksheets.Add(dataset.Tables[i], dataset.Tables[i].TableName);
            }

            // Prepare the response
            HttpResponse httpResponse = Response;
            httpResponse.Clear();
            httpResponse.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            //Provide you file name here
            httpResponse.AddHeader("content-disposition", "attachment;filename=\"" + "Attendance" + ".xlsx\"");
            // Flush the workbook to the Response.OutputStream
            using (MemoryStream memoryStream = new MemoryStream())
            {
                wbook.SaveAs(memoryStream);
                memoryStream.WriteTo(httpResponse.OutputStream);
                memoryStream.Close();
            }

            HttpContext.Current.Response.Flush(); // Sends all currently buffered output to the client.
            HttpContext.Current.Response.SuppressContent = true;  // Gets or sets a value indicating whether to send HTTP content to the client.
            HttpContext.Current.ApplicationInstance.CompleteRequest();
        }


    }

Comments

Popular posts from this blog

20-03-2020--------------admin/Hr_Permission.aspx

1) New change in Developer/attendance.aspx.cs

lave page for developer