Wednesday, April 16, 2014

Export Gridview or html table to Excel

1. Create javascript function



<script type="text/javascript">

        var tableToExcel = (function () {
            var uri = 'data:application/vnd.ms-excel;base64,'
              , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'
              , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
              , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }
            return function (table, name) {
                if (!table.nodeType) table = document.getElementById(table)
                var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }
                window.location.href = uri + base64(format(template, ctx))
            }
        })()
    </script>

2. Call function 


  <input type="button" runat="server" class="btn btn-success" onclick="tableToExcel('gvExport', 'name')" value="Export to Excel"/>
 

Thursday, April 3, 2014

Get Date from week number

1. Function is created to get date from week number and day of the week



static DateTime GetDateFrmWkNumberAndDayOfWk(int weekNumber, int dayOfWeek)
    {
        DateTime jan1 = new DateTime(DateTime.Now.Year, 1, 1);
        int daysOffset = DayOfWeek.Monday - jan1.DayOfWeek;

        DateTime firstMonday = jan1.AddDays(daysOffset);

        var cal = CultureInfo.CurrentCulture.Calendar;
        int firstWeek = cal.GetWeekOfYear(jan1, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

        var weekNum = weekNumber;
        if (firstWeek <= 1)
        {
            weekNum -= 1;
        }

        var result = firstMonday.AddDays(weekNum * 7 + dayOfWeek - 1);
        return result;
    }


2. pass week number and day of week to get date



DateTime theDate = GetDateFrmWkNumberAndDayOfWk(6, 1);