public static void Exporta(DataGridViewPersonalizat dGV, List <string> pListaColoaneImprimare, string pEtichetaTotal, string pFisier, bool pDeschideDupaCreare) { string fisierSalvare = pFisier; DataType tipCelula = DataType.String; if (string.IsNullOrEmpty(fisierSalvare)) { fisierSalvare = CCL.UI.IHMUtile.GetCaleSalvareFisier(CCL.UI.IHMUtile.GetFormParinte(dGV), ".xls"); } if (string.IsNullOrEmpty(fisierSalvare)) { return; } string idStilHeader = "idSHeader"; WorksheetStyle stilHeader = new WorksheetStyle(idStilHeader); stilHeader.Font.Bold = true; stilHeader.Interior.Pattern = StyleInteriorPattern.Solid; stilHeader.Interior.Color = "#c0c0c0"; string idStilTotal = "idSTotal"; WorksheetStyle stilTotal = new WorksheetStyle(idStilTotal); stilTotal.Font.Bold = true; stilTotal.Interior.Pattern = StyleInteriorPattern.Solid; stilTotal.Interior.Color = "#80ff80"; string idStilNormal = "idSNormal"; WorksheetStyle stilNormal = new WorksheetStyle(idStilNormal); Workbook book = new Workbook(); book.Styles.Add(stilHeader); book.Styles.Add(stilNormal); book.Styles.Add(stilTotal); Worksheet sheet = book.Worksheets.Add("iDava"); List <string> listaNumeColoaneExportabile = new List <string>(); Dictionary <string, DataType> dictColoaneTipuri = new Dictionary <string, DataType>(); string valoareCelula = string.Empty; WorksheetRow rowHeader = sheet.Table.Rows.Add(); foreach (string numeColoana in pListaColoaneImprimare) { if (dGV.Columns[numeColoana].Visible && !dGV.SeIgnoraColoanaLaImprimare(numeColoana)) { listaNumeColoaneExportabile.Add(numeColoana); //pentru a exporta datele coloanelor pretabile pentru export dictColoaneTipuri.Add(numeColoana, getDataType(dGV.Columns[numeColoana])); valoareCelula = CUtil.InlocuiesteDiacritice(dGV.Columns[numeColoana].HeaderText); rowHeader.Cells.Add(valoareCelula, dictColoaneTipuri[numeColoana], idStilHeader); } } List <DataGridViewRow> listaLiniiSelectate = dGV.GetListaLiniiSelectate(); bool existaValoareNumerica = false; double totalValoareNumerica = 0; foreach (DataGridViewRow linie in listaLiniiSelectate) { if (linie.Tag == null) { continue; //in Tag-ul tuturor liniilor din aplicatie salvam obiectul corespunzator liniei respective; lipsa acestuia implica ignorarea liniei } WorksheetRow rowValoare = sheet.Table.Rows.Add(); foreach (string numeColoane in pListaColoaneImprimare) { if (listaNumeColoaneExportabile.Contains(numeColoane)) { if (linie.Cells[numeColoane].Tag != null && linie.Cells[numeColoane].Tag is String) { valoareCelula = CUtil.ConvertObjectToString(linie.Cells[numeColoane].Tag, true); } else { valoareCelula = CUtil.ConvertObjectToString(linie.Cells[numeColoane].EditedFormattedValue, true); } if (dGV.esteColoanaNumericaExport(numeColoane)) { existaValoareNumerica = true; totalValoareNumerica += CUtil.GetAsDouble(valoareCelula); rowValoare.Cells.Add(valoareCelula, dictColoaneTipuri[numeColoane], idStilNormal); } else { rowValoare.Cells.Add(valoareCelula, dictColoaneTipuri[numeColoane], idStilNormal); } } } } if (existaValoareNumerica) { WorksheetRow rowValoare = sheet.Table.Rows.Add(); int indexCelula = 0; foreach (string numeColoane in pListaColoaneImprimare) { if (listaNumeColoaneExportabile.Contains(numeColoane)) { if (dGV.esteColoanaNumericaExport(numeColoane)) { rowValoare.Cells.Add(Convert.ToString(Math.Round(totalValoareNumerica, 2)), dictColoaneTipuri[numeColoane], idStilTotal); } else { if (indexCelula == 0) { rowValoare.Cells.Add(pEtichetaTotal, tipCelula, idStilTotal); } else { rowValoare.Cells.Add(string.Empty, tipCelula, idStilTotal); } indexCelula += 1; } } } } if (!string.IsNullOrEmpty(fisierSalvare)) { book.Save(fisierSalvare); if (pDeschideDupaCreare) { Process.Start(fisierSalvare); } } }