public void Paste(Int32 Pi_Row, Int32 Pi_Col) { Mws_Sheet.get_Range(Mws_Sheet.Cells[Pi_Row, Pi_Col], Mws_Sheet.Cells[Pi_Row, Pi_Col]).Select(); Mws_Sheet.Paste(Missing.Value, Missing.Value); }
static void Main(string[] args) { Excel.Application app = new Excel.Application(); app.Visible = true; app.Workbooks.Add(""); app.Workbooks.Add(@"c:\MyWork\WorkBook1.xls"); app.Workbooks.Add(@"c:\MyWork\WorkBook2.xls"); for (int i = 2; i <= app.Workbooks.Count; i++) { int count = app.Workbooks[i].Worksheets.Count; app.Workbooks[i].Activate(); for (int j = 1; j <= count; j++) { Excel._Worksheet ws = (Excel._Worksheet)app.Workbooks[i].Worksheets[j]; ws.Select(Type.Missing); ws.Cells.Select(); Excel.Range sel = (Excel.Range)app.Selection; sel.Copy(Type.Missing); Excel._Worksheet sheet = (Excel._Worksheet)app.Workbooks[1].Worksheets.Add( Type.Missing, Type.Missing, Type.Missing, Type.Missing ); sheet.Paste(Type.Missing, Type.Missing); } } }
public void filterDummyPriceValues() { xlAppInvalidOptions = new Excel.Application(); xlAppInvalidOptions.Visible = true; xlApp = new Excel.Application(); xlApp.Visible = true; try { xlWorkbook = xlApp.Workbooks.Open(@"C:\Users\U_jain\Documents\Visual Studio 2013\Projects\InvalidOptionsSheet.xlsx"); xlWorkbookInvalidOptions = xlAppInvalidOptions.Workbooks.Add(); // Open(@"C:\Users\U_jain\Documents\Visual Studio 2013\Projects\InvalidOptionsSheet.xlsx"); } catch (Exception e) { MessageBox.Show("Error in opening excel file!"); } try { xlWorksheet = xlWorkbook.Sheets[1]; xlWorksheetInvalidOptions = xlWorkbookInvalidOptions.Sheets[1]; } catch (Exception e) { MessageBox.Show("Expected worksheet not found!"); } xlRangeInvalidOptions = xlWorksheetInvalidOptions.UsedRange; xlRange = xlWorksheet.UsedRange; Excel.Range originalSheetRange = xlWorksheet.UsedRange; xlWorksheet.ListObjects.AddEx(Excel.XlListObjectSourceType.xlSrcRange, xlWorksheet.UsedRange, System.Type.Missing, Excel.XlYesNoGuess.xlYes).Name = "OptionPrices"; xlWorksheet.ListObjects["OptionPrices"].Range.AutoFilter(21, dummyPricesStrArray, Excel.XlAutoFilterOperator.xlFilterValues); Excel.Range invalidOptionsRange = originalSheetRange.SpecialCells(Excel.XlCellType.xlCellTypeVisible); xlRange = xlWorksheet.UsedRange; xlRange.Copy(Type.Missing); xlRangeInvalidOptions = xlWorksheetInvalidOptions.Cells[1, 1]; xlRangeInvalidOptions.Select(); xlWorksheetInvalidOptions.Paste(Type.Missing, Type.Missing); xlWorksheetInvalidOptions.SaveAs(@"C:\Users\U_jain\Documents\Visual Studio 2013\Projects\InvalidOptionsDummyPriceValues.xlsx"); xlWorkbookInvalidOptions.Close(0); xlAppInvalidOptions.Quit(); xlWorkbook.Close(0); xlApp.Quit(); openOriginalWorkbook(); }
public void filterDefaultStatusFalse() { Excel.Range originalSheetRange = xlWorksheet.UsedRange; xlWorksheet.ListObjects.AddEx(Excel.XlListObjectSourceType.xlSrcRange, xlWorksheet.UsedRange, System.Type.Missing, Excel.XlYesNoGuess.xlYes).Name = "DefaultStatus"; xlWorksheet.ListObjects["DefaultStatus"].Range.AutoFilter(13, new string[] { "FALSE" }, Excel.XlAutoFilterOperator.xlFilterValues); xlRange = xlWorksheet.UsedRange; xlRange.Copy(Type.Missing); xlAppInvalidOptions = new Excel.Application(); xlAppInvalidOptions.Visible = true; try { xlWorkbookInvalidOptions = xlAppInvalidOptions.Workbooks.Add(); //Open( @"C:\Users\U_jain\Documents\Visual Studio 2013\Projects\InvalidOptionsSheet.xlsx", false); } catch (Exception e) { MessageBox.Show("Error in opening excel file!"); } try { xlWorksheetInvalidOptions = xlWorkbookInvalidOptions.Sheets[1]; //xlWorkbookInvalidOptions.SaveAs(@"C:\Users\U_jain\Documents\Visual Studio 2013\Projects\InvalidOptionsSheet.xlsx"); } catch (Exception e) { MessageBox.Show("Expected worksheet not found!"); } xlRangeInvalidOptions = xlWorksheetInvalidOptions.Cells[1, 1]; xlRangeInvalidOptions.Select(); xlWorksheetInvalidOptions.Paste(Type.Missing, Type.Missing); xlWorkbookInvalidOptions.SaveAs(@"C:\Users\U_jain\Documents\Visual Studio 2013\Projects\InvalidOptionsSheet.xlsx"); xlWorkbookInvalidOptions.Close(0); xlAppInvalidOptions.Quit(); xlWorkbook.Close(0); xlApp.Quit(); filterSalesMediaCodeB(); }
public void SetImage(int Pi_Row, int Pi_Col, Image Po_Image) { Excel.Range Le_Range = null; try { Clipboard.SetDataObject(Po_Image); Le_Range = Mws_Sheet.get_Range(Mws_Sheet.Cells[Pi_Row, Pi_Col] as Excel.Range, Mws_Sheet.Cells[Pi_Row, Pi_Col] as Excel.Range); Mws_Sheet.Paste(Le_Range, Po_Image); //Le_Range.Select(); //Mws_Sheet.Paste(Missing.Value, Missing.Value); } catch (Exception) { throw; } finally { if (Le_Range != null) { Marshal.ReleaseComObject(Le_Range); } } }
public static void Export2Xls(DataTable data, string filename, bool exportHeader = true) { if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } Excel._Application xlsApp = null; Excel._Workbook xlsBook = null; Excel._Worksheet xstSheet = null; try { xlsApp = new Excel.ApplicationClass(); xlsBook = xlsApp.Workbooks.Add(); xstSheet = (Excel._Worksheet)xlsBook.Worksheets[1]; var buffer = new StringBuilder(); if (exportHeader) { // Excel中列与列之间按照Tab隔开 foreach (DataColumn col in data.Columns) { buffer.Append(col.ColumnName + "\t"); } buffer.AppendLine(); } foreach (DataRow row in data.Rows) { foreach (DataColumn col in data.Columns) { buffer.Append(row[col].ToString() + "\t"); } buffer.AppendLine(); } System.Windows.Forms.Clipboard.SetDataObject(""); // 放入剪切板 System.Windows.Forms.Clipboard.SetDataObject(buffer.ToString()); var range = (Excel.Range)xstSheet.Cells[1, 1]; range.Select(); xstSheet.Paste(); // 清空剪切板 System.Windows.Forms.Clipboard.SetDataObject(""); xstSheet.SaveAs(filename); } finally { if (xlsBook != null) { xlsBook.Close(); } if (xlsApp != null) { xlsApp.Quit(); } // finally里清空Com对象 Marshal.ReleaseComObject(xlsApp); Marshal.ReleaseComObject(xlsBook); Marshal.ReleaseComObject(xstSheet); xstSheet = null; xlsBook = null; xlsApp = null; MessageBox.Show("Save it successfully!"); } }
public void CreateSectionReport() { Report.XL.Visible = false; Report.XL.UserControl = false; Microsoft.Office.Interop.Excel._Workbook oWB = Report.CreateWorkBook(); Microsoft.Office.Interop.Excel._Worksheet oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet; //string strTrace = string.Format("preamble {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); string strReportName = "Section Detail Report"; Report.SheetPageSetup(oSheet, strReportName, 50d, 20d, 10d, "Network: " + m_strNetworkName, DateTime.Now.ToLongDateString(), "Page &P", 1); //oSheet.PageSetup.RightFooter = "Network: " + m_strNetworkName; //oSheet.PageSetup.LeftFooter = DateTime.Now.ToLongDateString(); //oSheet.PageSetup.CenterFooter = "Page &P"; //oSheet.PageSetup.FirstPageNumber = 1; //oSheet.PageSetup.LeftMargin = 50d; //oSheet.PageSetup.RightMargin = 20d; //oSheet.Columns.Font.Size = 10; object oEndCell = new object(); DataSet dsPage = null; DataSet dsGroupNames = null; DataSet dsGroupDetail = null; try { dsPage = DBOp.QueryPageHeader(strReportName); dsGroupNames = DBOp.QueryAttributeGroupNames(); dsGroupDetail = DBOp.QueryAttributeByGroup(); } catch (Exception e) { throw e; } int nSize = m_nMaxYear - m_nMinYear + 2; nSize = nSize < 1? 1: nSize; // Set up column header once, for multiple uses object[] oColumnHeader = new object[nSize]; oColumnHeader[0] = "ATTRIBUTE_"; int currentYear = m_nMinYear; for (int i = 1; i < nSize; i++, currentYear++) { oColumnHeader[i] = currentYear.ToString(); } string[] strCols = new string[m_ds.Tables[0].Columns.Count]; int idx = 0; foreach (DataColumn dataColumn in m_ds.Tables[0].Columns) { strCols[idx] = dataColumn.ColumnName.ToString(); idx++; } List <string> subList = new List <string>(); Cursor c = Cursor.Current; Cursor.Current = new Cursor(Cursors.WaitCursor.Handle); DataRow drPage = dsPage.Tables[0].Rows[0]; string strMajorTitle = drPage["phText"].ToString(); drPage = dsPage.Tables[0].Rows[2]; string strMinorTitle = drPage["phText"].ToString(); //if (strMinorTitle.IndexOf("@1") > 0) strMinorTitle = strMinorTitle.Replace("@1", m_strNetworkName); //if (strMinorTitle.IndexOf("@2") > 0) strMinorTitle = strMinorTitle.Replace("@2", m_ds.Tables[0].Rows[0]["FACILITY"].ToString() + ", Section: " + m_ds.Tables[0].Rows[0]["SECTION"].ToString()); int sumCol = 0, numSpacers = dsGroupNames.Tables[0].Rows.Count, numColHeaders = 1; sumCol = dsGroupDetail.Tables[0].Rows.Count; // number of detail rows // calculate number of array rows for report int aryRows = ((dsPage.Tables[0].Rows.Count + 1 + dsGroupNames.Tables[0].Rows.Count + sumCol + (dsGroupNames.Tables[0].Rows.Count * numColHeaders) + numSpacers) * m_ds.Tables[0].Rows.Count); int aryCurrentRow = 0; object[,] oData1 = new object[aryRows, nSize]; Report.ClearDataArray(ref oData1); //string strTrace = string.Format("start LOOP {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); string strFilter; #region Load data array //strTrace = string.Format("/tData start {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); foreach (DataRow drdata in m_ds.Tables[0].Rows) { // Page Header strMinorTitle = drPage["phText"].ToString(); if (strMinorTitle.IndexOf("@1") > 0) { strMinorTitle = strMinorTitle.Replace("@1", m_strNetworkName); } if (strMinorTitle.IndexOf("@2") > 0) { strMinorTitle = strMinorTitle.Replace("@2", drdata["FACILITY"].ToString() + ", Section: " + drdata["SECTION"].ToString()); } oData1[aryCurrentRow, 0] = ""; oData1[aryCurrentRow, 1] = strMajorTitle; aryCurrentRow++; oData1[aryCurrentRow, 0] = ""; aryCurrentRow++; oData1[aryCurrentRow, 0] = ""; oData1[aryCurrentRow, 1] = strMinorTitle; aryCurrentRow += 2; // Load Group Header foreach (DataRow dr1 in dsGroupNames.Tables[0].Rows) { oData1[aryCurrentRow, 0] = dr1["GROUPING"].ToString(); aryCurrentRow++; // Load Column Header for (int i = 0; i < nSize; i++) { oData1[aryCurrentRow, i] = oColumnHeader[i]; } aryCurrentRow++; //Load Detail Data strFilter = "GROUPING = '" + dr1["GROUPING"].ToString() + "'"; foreach (DataRow drDetail in dsGroupDetail.Tables[0].Select(strFilter)) { // Set the Row Label text oData1[aryCurrentRow, 0] = drDetail["ATTRIBUTE_"].ToString(); // Load the Data values subList = columnsFromArrayStartingWith(strCols, drDetail["ATTRIBUTE_"].ToString()); PopulateGroupArrayRowAt(ref oData1, subList, drdata, aryCurrentRow); aryCurrentRow++; } aryCurrentRow++; } } //strTrace = string.Format("/tData stop {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); #endregion oEndCell = "A1"; oEndCell = Report.WriteObjectArrayToExcel(oData1, oSheet, oEndCell, false); Range oR = oSheet.get_Range("A1", "A1"); String strWork = ""; List <string> rangeList = new List <string>(); int sheetRow; #region set column widths //strTrace = string.Format("/tColWidth start {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); sheetRow = 1; oR = oSheet.get_Range("A1:A1", Missing.Value); oR.ColumnWidth = 16; Report.BuildRange(ref strWork, ref rangeList, sheetRow, 'B', nSize - 1); Report.EndRangeList(ref strWork, ref rangeList); oR = oSheet.get_Range(rangeList.First(), Missing.Value); oR.ColumnWidth = 9; rangeList.Clear(); strWork = ""; //strTrace = string.Format("/tColWidth stop {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); #endregion #region ranges helper Array // Build a rows array used for building ranges, formatting report, etc. int [] clearRows = new int[dsGroupNames.Tables[0].Rows.Count + 1]; aryCurrentRow = 1; clearRows[0] = dsPage.Tables[0].Rows.Count + 1; foreach (DataRow drGrouping in dsGroupNames.Tables[0].Rows) { strFilter = "grouping = '" + drGrouping["grouping"].ToString() + "'"; int filterCount = 0; foreach (DataRow drDetail in dsGroupDetail.Tables[0].Select(strFilter)) { filterCount++; } int cc = clearRows[aryCurrentRow - 1]; clearRows[aryCurrentRow++] = cc + filterCount + 3; } #endregion #region clear gridlines //strTrace = string.Format("/tGridlines start {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); sheetRow = 0; // Clear gridlines between data group, pages for (int i = 0; i < m_ds.Tables[0].Rows.Count; i++) { for (int clearCount = 0; clearCount <= clearRows.GetUpperBound(0); clearCount++) { if (clearCount == 0) { sheetRow += clearRows[0]; } else { sheetRow += clearRows[clearCount] - clearRows[clearCount - 1]; } if (clearCount == 0) { strWork += "A" + (sheetRow - 3).ToString() + ":I" + sheetRow.ToString() + ","; } else { Report.BuildRange(ref strWork, ref rangeList, sheetRow, 'A', nSize - 1); } } } // Finish the range List Report.EndRangeList(ref strWork, ref rangeList); foreach (string strRange in rangeList) { oR = oSheet.get_Range(strRange, Missing.Value); oR.ClearFormats(); } rangeList.Clear(); strWork = ""; //strTrace = string.Format("/tGridline stop {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); #endregion #region pageBreaks // Add page breaks //strTrace = string.Format("/tPgBreak start {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); sheetRow = clearRows[clearRows.GetUpperBound(0)]; for (int i = 0; i < m_ds.Tables[0].Rows.Count; i++) { oR = oSheet.get_Range("A" + sheetRow.ToString(), Missing.Value); oR.PageBreak = (int)XlPageBreak.xlPageBreakManual; sheetRow += clearRows[clearRows.GetUpperBound(0)]; } //strTrace = string.Format("/tPgBreak stop {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); #endregion #region pageHeader // Format page header for each page in report //strTrace = string.Format("/tPgHeader start {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); sheetRow = 1; idx = 1; foreach (DataRow drPgHdr in dsPage.Tables[0].Rows) { for (int i = 0; i < m_ds.Tables[0].Rows.Count; i++) { //Report.BuildRange(ref strWork, ref rangeList, sheetRow, 'B', nSize - 2); Report.BuildRange(ref strWork, ref rangeList, sheetRow, 'B', 7); sheetRow += clearRows[clearRows.GetUpperBound(0)]; } // Finish the range List Report.EndRangeList(ref strWork, ref rangeList); foreach (string strRange in rangeList) { Report.FormatHeaders(oR, drPgHdr, oSheet, "ph", strRange); } rangeList.Clear(); sheetRow = ++idx; // point to the next pageheader line strWork = ""; } //strTrace = string.Format("/tPgHeader stop {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); #endregion #region pageImage //strTrace = string.Format("/tImage start {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); //string strPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\RoadCare Projects\\" + drPage["reportGraphicFile"].ToString(); string strPath = ".\\" + drPage["reportGraphicFile"].ToString(); if (strPath != ".\\") { Image img = Image.FromFile(strPath); System.Windows.Forms.Clipboard.SetDataObject(img, true); sheetRow = 1; for (int i = 0; i < m_ds.Tables[0].Rows.Count; i++) { oR = oSheet.get_Range("A" + sheetRow.ToString(), Missing.Value); oSheet.Paste(oR, img); sheetRow += (clearRows[clearRows.GetUpperBound(0)]); } } //strTrace = string.Format("/tImage stop {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); #endregion #region groupHeaders // Format group headers for each page in report, programmed for single line group header with multiple group headers per page //strTrace = string.Format("/tGroupHeader start {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); aryCurrentRow = 0; sheetRow = clearRows[0] + 1; for (int i = 0; i < m_ds.Tables[0].Rows.Count; i++) { aryCurrentRow = 0; foreach (DataRow drGroupName in dsGroupNames.Tables[0].Rows) { Report.BuildRange(ref strWork, ref rangeList, sheetRow, 'A', nSize - 1); aryCurrentRow++; sheetRow += clearRows[aryCurrentRow] - clearRows[aryCurrentRow - 1]; } sheetRow += clearRows[0]; } // Finish the range List Report.EndRangeList(ref strWork, ref rangeList); foreach (string strRange in rangeList) { DataRow drGroupHdr = dsPage.Tables[0].Rows[0]; Report.FormatHeaders(oR, drGroupHdr, oSheet, "gh", strRange); } rangeList.Clear(); strWork = ""; //strTrace = string.Format("/tGroupHeader stop {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); #endregion #region columnHeaders // Build the range list for the column headers for each page in report //strTrace = string.Format("/tColHeader start {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); aryCurrentRow = 0; sheetRow = clearRows[0] + 2; for (int i = 0; i < m_ds.Tables[0].Rows.Count; i++) { aryCurrentRow = 0; foreach (DataRow dr1 in dsGroupNames.Tables[0].Rows) // column header is repeated for each group { Report.BuildRange(ref strWork, ref rangeList, sheetRow, 'A', nSize - 1); aryCurrentRow++; sheetRow += clearRows[aryCurrentRow] - clearRows[aryCurrentRow - 1]; } sheetRow += clearRows[0]; } // Finish the range List Report.EndRangeList(ref strWork, ref rangeList); DataRow drCol = dsPage.Tables[0].Rows[0]; // only one row foreach (string strRange in rangeList) { Report.FormatHeaders(oR, drCol, oSheet, "ch", strRange); } //strTrace = string.Format("/tColHeader stop {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); #endregion //strTrace = string.Format("stop LOOP {0}", DateTime.Now.TimeOfDay); //System.Diagnostics.Trace.WriteLine(strTrace); Report.XL.Visible = true; Report.XL.UserControl = true; } // end createsectionreport
private void ToExcel(string fileName) { int rowSuccess = 0; int row = 0, column = 0; try { string filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), fileName + DateTime.Now.ToString("dd-MM-yyyy-HH.mm.ss") + ".xlsx"); // creating Excel Application Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); // creating new WorkBook within Excel application Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); // creating new Excelsheet in workbook Microsoft.Office.Interop.Excel._Worksheet worksheet = null; // see the excel sheet behind the program app.Visible = false; // get the reference of first sheet. By default its name is Sheet1. // store its reference to worksheet worksheet = workbook.Sheets["Sheet1"]; worksheet = workbook.ActiveSheet; // changing the name of active sheet worksheet.Name = "Sheet1"; // storing header part in Excel //var columnHeadingsRange = worksheet.Range[worksheet.Cells[1, 4], worksheet.Cells[1, 8]]; //columnHeadingsRange.Interior.Color = XlRgbColor.rgbOrange; Bitmap bmp; byte[] imgData; //using (var ms = new MemoryStream(imgData)) //{ // bmp = new Bitmap(ms); // System.Windows.Forms.Clipboard.SetDataObject(bmp, false); // var rng = worksheet.Cells[2,1]; // worksheet.Paste(rng, bmp); //} int columnHeader = 0; for (int i = 0; i < dtProductNew.Columns.Count; i++) { if (dtProductNew.Columns[i].ColumnName == "Barcode") { columnHeader += 1; } worksheet.Cells[1, columnHeader + 1] = dtProductNew.Columns[i].ToString(); columnHeader++; } // storing Each row and column value to excel sheet for (int i = 0; i < dtProductNew.Rows.Count; i++) { rowSuccess++; for (int j = 0; j < dtProductNew.Columns.Count; j++) { if (dtProductNew.Columns[j].ColumnName == "Barcode") { imgData = (byte[])dtProductNew.Rows[i][j]; using (var ms = new MemoryStream(imgData)) { bmp = new Bitmap(ms); System.Windows.Forms.Clipboard.SetDataObject(bmp, false); var rng = worksheet.Cells[row + 2, column + 1]; worksheet.Paste(rng, bmp); column += 2; } } else { worksheet.Cells[row + 2, column + 1] = dtProductNew.Rows[i][j].ToString(); //row++; column++; } } column = 0; row += 5; } // save the application workbook.SaveAs(filePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing); workbook.Close(); // Exit from the application app.Quit(); } catch (Exception ex) { MessageBox.Show("NOT SUCCESS" + rowSuccess); } }