//using System; //using System.Diagnostics; //using System.Globalization; //using System.IO; //using System.Reflection; //using System.Runtime.InteropServices; //using System.Text; //using System.Windows; //using Microsoft.Office.Interop.Excel; //using Application = Microsoft.Office.Interop.Excel.Application; //namespace ExtendedGrid.Classes //{ // internal class ExportToExcelService // { // //[DllImport("Oleacc.dll")] // //public static extern int AccessibleObjectFromWindow(int hwnd, uint dwObjectId, byte[] riid, ref System.Windows.Window ptr); // public delegate bool EnumChildCallback(int hwnd, ref int lParam); // [DllImport("User32.dll")] // public static extern bool EnumChildWindows(int hWndParent, EnumChildCallback lpEnumFunc, ref int lParam); // [DllImport("User32.dll")] // public static extern int GetClassName(int hWnd, StringBuilder lpClassName, int nMaxCount); // public static bool EnumChildProc(int hwndChild, ref int lParam) // { // var buf = new StringBuilder(128); // GetClassName(hwndChild, buf, 128); // if (buf.ToString() == "EXCEL7") // { // lParam = hwndChild; // return false; // } // return true; // } // internal static void CreateExcelFromClipboard(string worksheetName, string fullFilePath, bool toOpen) // { // //Excel Application class // var app = new Application(); // //Get process id // int excelProcessId = GetApplicationProcessId(app); // try // { // //Add workbook // Workbook theWorkbook = app.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); // //Add worksheet // var theWorksheet = // (Worksheet)theWorkbook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); // string sheetName = worksheetName; // if (worksheetName.Length > 31) // sheetName = worksheetName.Substring(0, 31); // theWorksheet.Name = sheetName; // app.SheetsInNewWorkbook = 1; // app.DisplayAlerts = false; // ((_Worksheet)theWorksheet).Activate(); // //Paste to the worksheet from clpboard // theWorksheet.Paste(Type.Missing, Type.Missing); // //Apply Borders // ApplyBorder(theWorksheet.UsedRange); // //Auto Fit All columns // Range xlRange = theWorksheet.UsedRange; // // put all hardcodes in a constant class // xlRange.Font.Name = "Arial"; // xlRange.Font.Size = 9; // var firstRowRange = (Range)xlRange.Rows[1, Missing.Value]; // firstRowRange.EntireRow.Font.Bold = true; // firstRowRange.EntireRow.HorizontalAlignment = XlHAlign.xlHAlignCenter; // //Set Wrap Test to false // xlRange.WrapText = false; // xlRange.Columns.AutoFit(); // ((_Worksheet)theWorksheet).Activate(); // //Save the file // theWorkbook.SaveAs(fullFilePath, XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, // Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, // Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); // if (!toOpen) // { // //Clean up // app.Quit(); // Marshal.ReleaseComObject(app); // } // } // catch // { // ForceExcelClose(excelProcessId); // throw; // } // finally // { // app.Visible = toOpen; // } // } // internal static void CreatePdfFromClipboard(string worksheetName, string fullFilePath, bool toOpen) // { // //Excel Application class // var app = new Application(); // //Get process id // int excelProcessId = GetApplicationProcessId(app); // app.Visible = false; // try // { // //Add workbook // Workbook theWorkbook = app.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); // //Add worksheet // var theWorksheet = // (Worksheet)theWorkbook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); // string sheetName = worksheetName; // if (worksheetName.Length > 31) // sheetName = worksheetName.Substring(0, 31); // theWorksheet.Name = sheetName; // app.SheetsInNewWorkbook = 1; // ((_Worksheet)theWorksheet).Activate(); // app.DisplayAlerts = false; // //Paste to the worksheet from clpboard // theWorksheet.Paste(Type.Missing, Type.Missing); // //Apply Borders // ApplyBorder(theWorksheet.UsedRange); // //Auto Fit All columns // Range xlRange = theWorksheet.UsedRange; // // put all hardcodes in a constant class // xlRange.Font.Name = "Arial"; // xlRange.Font.Size = 9; // var firstRowRange = (Range)xlRange.Rows[1, Missing.Value]; // firstRowRange.EntireRow.Font.Bold = true; // firstRowRange.EntireRow.HorizontalAlignment = XlHAlign.xlHAlignCenter; // //Set Wrap Test to false // xlRange.WrapText = false; // xlRange.Columns.AutoFit(); // ((_Worksheet)theWorksheet).Activate(); // //Save the file // string xcelFile = Path.Combine(Path.GetTempPath(), // Path.GetFileNameWithoutExtension(fullFilePath) + ".xlsx"); // theWorkbook.SaveAs(xcelFile, XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, // Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, // Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); // theWorksheet.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, fullFilePath, // XlFixedFormatQuality.xlQualityStandard, true, false, Missing.Value, // Missing.Value, toOpen, Missing.Value); // //Clean up // app.Quit(); // Marshal.ReleaseComObject(app); // File.Delete(xcelFile); // } // catch // { // MessageBox.Show( // "Please add 2007 Microsoft Office Add-in: Microsoft Save as PDF or XPS , dowload it from this location http://www.microsoft.com/download/en/details.aspx?id=7", // "Error", MessageBoxButton.OK, MessageBoxImage.Error); // ForceExcelClose(excelProcessId); // throw; // } // } // internal static void CreateCsvFromClipboard(string workSheetName, string fullFilePath, bool toOpen) // { // StreamWriter sw = null; // try // { // sw = new StreamWriter(fullFilePath); // string clipboardText = Clipboard.GetText(); // if (clipboardText.Contains(",")) // { // string[] splitted = clipboardText.Split(','); // for (int i = 0; i < splitted.Length; i++) // { // if (i == 0) // { // var current = splitted[i]; // var lastIndex = current.LastIndexOf("\t", StringComparison.Ordinal); // if (lastIndex != -1) // { // current = current.Insert(lastIndex + 1, "\""); // splitted[i] = current; // } // } // else // { // var current = splitted[i]; // int firstIndex = current.IndexOf("\t", StringComparison.Ordinal); // if (firstIndex != -1) // { // current = current.Insert(firstIndex, "\""); // splitted[i] = current; // } // int lastIndex = current.LastIndexOf("\t", StringComparison.Ordinal); // if (lastIndex != -1) // { // current = current.Insert(lastIndex + 1, "\""); // splitted[i] = current; // } // } // } // if (splitted.Length > 1) // { // string modifiedText = ""; // int index = 0; // foreach (string s in splitted) // { // if (index == 0) // { // modifiedText = modifiedText + s; // } // else // { // modifiedText = modifiedText + "," + s; // } // index++; // } // clipboardText = modifiedText; // } // } // clipboardText = clipboardText.Replace(" ", ","); // sw.Write(clipboardText); // } // finally // { // if (sw != null) sw.Close(); // Process.Start(fullFilePath); // } // } // private static int GetApplicationProcessId(_Application excelApp) // { // int excelPid = -1; // // // // Get the Excel instance's process ID...used later // // to prevent orphaned Excel processes. // // // Process[] aProcesses = Process.GetProcesses(); // for (int i = 0; i <= aProcesses.GetUpperBound(0); i++) // { // if (aProcesses[i].MainWindowHandle.ToString() == excelApp.Hwnd.ToString(CultureInfo.InvariantCulture)) // { // excelPid = aProcesses[i].Id; // break; // } // } // return excelPid; // } // private static void ForceExcelClose(int excelPid) // { // Process[] aProcesses = Process.GetProcesses(); // Process aProcess = null; // // // // Look for an Excel process matching the one we started. // // // for (int i = 0; i <= aProcesses.GetUpperBound(0); i++) // { // if (aProcesses[i].Id == excelPid) // { // aProcess = aProcesses[i]; // break; // } // } // // // // If we found a matching Excel proceess with no main window // // associated main window, kill it. // // // if (aProcess != null) // { // if (aProcess.ProcessName.ToUpper() == "EXCEL") // { // if (!aProcess.HasExited) // { // aProcess.Kill(); // } // } // } // } // internal static string GetExcelColumnName(int columnNumber) // { // int dividend = columnNumber; // string columnName = String.Empty; // while (dividend > 0) // { // int modulo = (dividend - 1) % 26; // columnName = Convert.ToChar(65 + modulo) + columnName; // dividend = (dividend - modulo) / 26; // } // return columnName; // } // internal static void ClearBorder(Range range) // { // if (range == null) // return; // range.Borders[XlBordersIndex.xlDiagonalDown].LineStyle = Constants.xlNone; // range.Borders[XlBordersIndex.xlDiagonalUp].LineStyle = Constants.xlNone; // Array xlBorderArray = Enum.GetValues(typeof(XlBordersIndex)); // foreach (object xlBorder in xlBorderArray) // { // switch ((XlBordersIndex)xlBorder) // { // case XlBordersIndex.xlInsideHorizontal: // case XlBordersIndex.xlInsideVertical: // case XlBordersIndex.xlEdgeRight: // case XlBordersIndex.xlEdgeBottom: // case XlBordersIndex.xlEdgeTop: // case XlBordersIndex.xlEdgeLeft: // range.Borders[(XlBordersIndex)xlBorder].LineStyle = // Constants.xlNone; // break; // } // } // } // internal static void ApplyBorder(Range usedRange) // { // if (usedRange == null) // return; // usedRange.Borders[XlBordersIndex.xlDiagonalDown].LineStyle = Constants.xlNone; // usedRange.Borders[XlBordersIndex.xlDiagonalUp].LineStyle = Constants.xlNone; // Array xlBorderArray = Enum.GetValues(typeof(XlBordersIndex)); // foreach (object xlBorder in xlBorderArray) // { // switch ((XlBordersIndex)xlBorder) // { // case XlBordersIndex.xlInsideHorizontal: // case XlBordersIndex.xlInsideVertical: // case XlBordersIndex.xlEdgeRight: // case XlBordersIndex.xlEdgeBottom: // case XlBordersIndex.xlEdgeTop: // case XlBordersIndex.xlEdgeLeft: // usedRange.Borders[(XlBordersIndex)xlBorder].LineStyle = XlLineStyle.xlContinuous; // usedRange.Borders[(XlBordersIndex)xlBorder].ColorIndex = // Constants.xlAutomatic; // usedRange.Borders[(XlBordersIndex)xlBorder].TintAndShade = 0; // usedRange.Borders[(XlBordersIndex)xlBorder].Weight = XlBorderWeight.xlThin; // break; // } // } // } // internal static void CreateExcelFromClipboard(string workSheetName, string fullFilePath, // ExcelTableStyle excelTableStyle, bool toOpen) // { // //Excel Application class // var app = new Application(); // //Get process id // int excelProcessId = GetApplicationProcessId(app); // app.DisplayAlerts = false; // try // { // //Add workbook // Workbook theWorkbook = app.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); // //Add worksheet // var theWorksheet = // (Worksheet)theWorkbook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); // string sheetName = workSheetName; // if (workSheetName.Length > 31) // sheetName = workSheetName.Substring(0, 31); // theWorksheet.Name = sheetName; // app.SheetsInNewWorkbook = 1; // ((_Worksheet)theWorksheet).Activate(); // //Paste to the worksheet from clpboard // theWorksheet.Paste(Type.Missing, Type.Missing); // //Apply Borders // ApplyBorder(theWorksheet.UsedRange); // //Auto Fit All columns // Range xlRange = theWorksheet.UsedRange; // // put all hardcodes in a constant class // xlRange.Font.Name = "Arial"; // xlRange.Font.Size = 9; // var firstRowRange = (Range)xlRange.Rows[1, Missing.Value]; // firstRowRange.EntireRow.Font.Bold = true; // firstRowRange.EntireRow.HorizontalAlignment = XlHAlign.xlHAlignCenter; // //Set Wrap Test to false // xlRange.WrapText = false; // object misValue = Missing.Value; // theWorksheet.ListObjects.Add(XlListObjectSourceType.xlSrcRange, // xlRange, misValue, XlYesNoGuess.xlYes, misValue).Name = "myTableList"; // string tableStyleName = "TableStyle" + excelTableStyle; // theWorksheet.ListObjects["myTableList"].TableStyle = tableStyleName; // xlRange.Columns.AutoFit(); // ((_Worksheet)theWorksheet).Activate(); // //Save the file // theWorkbook.SaveAs(fullFilePath, XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, // Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, // Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); // if (!toOpen) // { // //Clean up // app.Quit(); // Marshal.ReleaseComObject(app); // } // } // catch // { // ForceExcelClose(excelProcessId); // throw; // } // finally // { // app.Visible = toOpen; // } // } // internal static void CreatePdfFromClipboard(string workSheetName, string fullFilePath, // ExcelTableStyle tableStyle, bool toOpen) // { // //Excel Application class // var app = new Application(); // //Get process id // int excelProcessId = GetApplicationProcessId(app); // app.DisplayAlerts = false; // app.Visible = false; // try // { // //Add workbook // Workbook theWorkbook = app.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); // //Add worksheet // var theWorksheet = // (Worksheet)theWorkbook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); // string sheetName = workSheetName; // if (workSheetName.Length > 31) // sheetName = workSheetName.Substring(0, 31); // theWorksheet.Name = sheetName; // app.SheetsInNewWorkbook = 1; // ((_Worksheet)theWorksheet).Activate(); // //Paste to the worksheet from clpboard // theWorksheet.Paste(Type.Missing, Type.Missing); // //Apply Borders // ApplyBorder(theWorksheet.UsedRange); // //Auto Fit All columns // Range xlRange = theWorksheet.UsedRange; // // put all hardcodes in a constant class // xlRange.Font.Name = "Arial"; // xlRange.Font.Size = 9; // var firstRowRange = (Range)xlRange.Rows[1, Missing.Value]; // firstRowRange.EntireRow.Font.Bold = true; // firstRowRange.EntireRow.HorizontalAlignment = XlHAlign.xlHAlignCenter; // //Set Wrap Test to false // xlRange.WrapText = false; // object misValue = Missing.Value; // theWorksheet.ListObjects.Add(XlListObjectSourceType.xlSrcRange, // xlRange, misValue, XlYesNoGuess.xlYes, misValue).Name = "myTableList"; // string tableStyleName = "TableStyle" + tableStyle; // theWorksheet.ListObjects["myTableList"].TableStyle = tableStyleName; // xlRange.Columns.AutoFit(); // ((_Worksheet)theWorksheet).Activate(); // //Save the file // string xcelFile = Path.Combine(Path.GetTempPath(), // Path.GetFileNameWithoutExtension(fullFilePath) + ".xlsx"); // theWorkbook.SaveAs(xcelFile, XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, // Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, // Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); // theWorksheet.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, fullFilePath, // XlFixedFormatQuality.xlQualityStandard, true, false, Missing.Value, // Missing.Value, toOpen, Missing.Value); // //Clean up // app.Quit(); // Marshal.ReleaseComObject(app); // File.Delete(xcelFile); // } // catch // { // MessageBox.Show( // "Please add 2007 Microsoft Office Add-in: Microsoft Save as PDF or XPS , dowload it from this location http://www.microsoft.com/download/en/details.aspx?id=7", // "Error", MessageBoxButton.OK, MessageBoxImage.Error); // ForceExcelClose(excelProcessId); // throw; // } // } // } // public enum ExcelTableStyle // { // Light1, // Light2, // Light3, // Light4, // Light5, // Light6, // Light7, // Light8, // Light9, // Light10, // Light11, // Light12, // Light13, // Light14, // Light15, // Light16, // Light17, // Light18, // Light19, // Light20, // Light21, // Medium1, // Medium2, // Medium3, // Medium4, // Medium5, // Medium6, // Medium7, // Medium8, // Medium9, // Medium10, // Medium11, // Medium12, // Medium13, // Medium14, // Medium15, // Medium16, // Medium17, // Medium18, // Medium19, // Medium20, // Medium21, // Medium22, // Medium23, // Medium24, // Medium25, // Medium26, // Medium27, // Medium28, // Dark1, // Dark2, // Dark3, // Dark4, // Dark5, // Dark6, // Dark7, // Dark8, // Dark9, // Dark10, // Dark11, // } //}