public IWorkbook getWorkbookXLS(string tTitle, string tSubtitle, string tSource, string tKeywords, string tTableData, string tSvg)
    {
        IWorkbook workbook = null;
        try
        {
            string workingDir = Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath, Constants.XLSDownloadType.SvgRasterizerFolder);
            string baticPath = Constants.XLSDownloadType.BatikRasterizerJarFile;
            string templateFilePath = Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath, Constants.XLSDownloadType.ExcelTemplateFilePath);
            if (File.Exists(templateFilePath))
            {
                Process dosProcess = new Process();
                dosProcess.EnableRaisingEvents = false;
                if (!Page.IsPostBack)
                {
                    ExportExcel exportExcel = new ExportExcel();
                    workbook = SpreadsheetGear.Factory.GetWorkbook(templateFilePath);
                    #region Table tab
                    IWorksheet tableWorksheet = workbook.Worksheets[1];
                    tableWorksheet.Name = "Table";
                    tableWorksheet = exportExcel.getTableWorksheet(tableWorksheet, tTableData, tTitle);
                    #endregion
                    #region Source tab
                    IWorksheet sourceWorksheet = workbook.Worksheets[2];
                    sourceWorksheet.Name = "Source";
                    sourceWorksheet.Cells["A1"].Value = "Source";
                    string[] sourceArray = null;
                    if (!string.IsNullOrEmpty(tSource))
                    {
                        sourceArray = tSource.Split(new string[] { "{}" }, StringSplitOptions.None);
                        int i = 2;
                        foreach (string sourceString in sourceArray)
                        {
                            sourceWorksheet.Cells["A" + i].Value = sourceString;
                            i++;
                        }
                    }
                    #endregion
                    #region Keywords tab
                    IWorksheet keywordWorksheet = workbook.Worksheets[3];
                    keywordWorksheet.Name = "Keywords";
                    keywordWorksheet.Cells["A1"].Value = "Keywords";
                    string[] keywordArray = null;
                    if (!string.IsNullOrEmpty(tKeywords))
                    {
                        keywordArray = tKeywords.Split(new string[] { "{}" }, StringSplitOptions.None);
                        int i = 2;
                        foreach (string keywordString in keywordArray)
                        {
                            keywordWorksheet.Cells["A" + i].Value = keywordString;
                            i++;
                        }
                    }
                    #endregion
                    #region If Svg ImageFormat
                    if (!string.IsNullOrEmpty(tSvg))
                    {
                        string tempFilename = DateTime.Now.ToString();
                        tempFilename = exportExcel.removeInvalidCharacters(tempFilename);
                        string filePath = Path.Combine(workingDir, tempFilename + Constants.XLSDownloadType.SvgExtention);
                        FileStream fileStream = File.Create(filePath);
                        fileStream.Close();
                        using (StreamWriter sw = new StreamWriter(filePath))
                        {
                            sw.Write(tSvg);
                        }
                        # region Image convertion svg to png using Batick
                        /* Convert svg to png using http://xmlgraphics.apache.org/batik/tools/rasterizer.html */

                        string filePth = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @filePath);

                        var sampleDoc = SvgDocument.Open(filePth, new Dictionary<string, string>
                        {
                            {"entity1", "fill:red" },
                            {"entity2", "fill:yellow" }
                        });
                        string destination = @workingDir + "\\" + tempFilename + ".png";
                        sampleDoc.Draw().Save(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, destination));

                        int imageWidth = 470;
                        //string command = "/C java -jar " + baticPath + " " + Constants.XLSDownloadType.ImageType + " " + tempFilename + Constants.XLSDownloadType.SvgExtention;
                        //ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe");
                        //startInfo.UseShellExecute = false;
                        //startInfo.WorkingDirectory = workingDir;
                        //startInfo.Arguments = command;
                        //startInfo.CreateNoWindow = true;
                        //dosProcess.StartInfo = startInfo;
                        //dosProcess.Start();
                        //dosProcess.WaitForExit();
                        //dosProcess.Close();
                        #endregion
                        #region Graph tab
                        string chartImageName = Path.Combine(workingDir, tempFilename);
                        if (File.Exists(chartImageName + Constants.XLSDownloadType.PngExtention))
                        {
                            MemoryStream picStream = new MemoryStream();
                            System.Drawing.Image chartImageObj = System.Drawing.Image.FromFile(chartImageName + Constants.XLSDownloadType.PngExtention);
                            chartImageObj.Save(picStream, ImageFormat.Png);
                            chartImageObj.Dispose();
                            // Graph tab
                            IWorksheet visualizerWorksheet = workbook.Worksheets[0];
                            visualizerWorksheet.Name = "Graph";
                            visualizerWorksheet.Cells["A1"].Value = tTitle;
                            visualizerWorksheet.Cells["A2"].Value = tSubtitle;
                            visualizerWorksheet.Cells["A3"].Value = DateTime.Now.ToString();
                            string baseURL = this.Page.Request.Url.OriginalString.ToString();
                            baseURL = baseURL.Substring(0, baseURL.IndexOf("libraries") - 1);
                            visualizerWorksheet.Cells["A4"].Value = baseURL;
                            visualizerWorksheet.Cells["A1"].Columns.AutoFit();
                            System.Drawing.Image chartImage = System.Drawing.Image.FromStream(picStream);
                            int imageHeight = (int)((imageWidth * chartImage.Height) / chartImage.Width);
                            visualizerWorksheet.Shapes.AddPicture(picStream.ToArray(), 0, 100, (double)imageWidth, (double)imageHeight);
                            picStream.Close();
                            picStream.Dispose();
                            visualizerWorksheet.MoveBefore(workbook.Sheets[0]);
                            //Delete image files.
                            if (File.Exists(chartImageName + Constants.XLSDownloadType.PngExtention))
                            {
                                File.Delete(chartImageName + Constants.XLSDownloadType.PngExtention);
                            }
                            if (File.Exists(chartImageName + Constants.XLSDownloadType.SvgExtention))
                            {
                                File.Delete(chartImageName + Constants.XLSDownloadType.SvgExtention);
                            }
                        }
                        #endregion
                    }
                    else
                    {
                        workbook.Sheets[0].Delete();
                    }
                    # endregion
                    workbook.Sheets[0].Select();
                }
            }
        }
        catch (Exception ex)
        {
            Global.CreateExceptionString(ex, null);
        }
        return workbook;
    }