In pratica il problema è che facendo nel modo in cui ho postato mi elaboro e mi riscrivo un file excel nuovo per ogni file elaborato.
Mentre devo creare un file unico ed accodare tutte le nuove elaborazioni nello stesso file. grazie per gli eventuali suggerimenti. Grazie mille.
- Codice: Seleziona tutto
public class RecordExcel
{
public string NumeroContratto { set; get; }
public string CodiceCliente { set; get; }
public string ImportoTassa { set; get; }
public string CostoEsazione { set; get; }
public string CostoContratto { set; get; }
public string Spese { set; get; }
public string Targa { set; get; }
public string Servizi { set; get; }
public string Sconto { set; get; }
public string Commissioni { set; get; }
public string Totale { set; get; }
}
private void AvviaGenerazioneReports()
{
DataTable TabellaDati = GetTable();
foreach (DataRow rigo in TabellaDati.Rows)
{
string PROV = rigo["AC"].ToString();
string NomeFileExcel = rigo["Stampa"].ToString();
string NomeFileXML = rigo["NomeRIDProdotto"].ToString();
string NomeFoglioDati = NomeFileExcel.Replace(".xlsx", "").Replace(".xls", "");
GeneraExcel(PROV, NomeFileExcel, NomeFileXML, NomeFoglioDati);
}
}
private void GeneraExcel(string Provincia, string NomeFileExcel, string NomeFileXML, string NomeFoglioDati)
{
// ExportToExcel(GridView1, "ExportedUserDetail");
string prov = Provincia;
string PERCORSO = Classi.Costanti.PercorsoCartellaReport;
// string PERCORSOxml = Classi.Costanti.PercorsoCartellaXML;
string filename = PERCORSO + "/" + prov + "/" + NomeFileExcel;
ViewState["file"] = NomeFileExcel;
//Leggo id dall'Excel
var ElencoRecords = getDatiExcel(filename);
//Genero il nuovo file Excel
SalvaDatiNuovoExcel (ElencoRecords, PERCORSO, prov, NomeFileXML, filename);
}
private void SalvaDatiNuovoExcel(List <RecordExcel> ElencoRecords,string PERCORSO, string prov,string NomeFileXML, string filename)
{
string PercorsoXML = Classi.Costanti.PercorsoCartellaXML+"/"+prov+"/"+NomeFileXML;
Microsoft.Office.Interop.Excel._Application oApp;
Microsoft.Office.Interop.Excel._Worksheet oSheet;
Microsoft.Office.Interop.Excel._Workbook oBook;
oApp = new Microsoft.Office.Interop.Excel.Application();
oBook = oApp.Workbooks.Add(true);
oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oBook.Worksheets.get_Item(1)
oSheet.Cells[1, 1] = "Contratto numero";
oSheet.Cells[1, 2] = "Codice Cliente / RIF Bancario";
oSheet.Cells[1, 3] = "Targa";
oSheet.Cells[1, 4] = "Tassa";
oSheet.Cells[1, 5] = "Costo contratto";
oSheet.Cells[1, 6] = "Spese";
oSheet.Cells[1, 7] = "Commisioni";
oSheet.Cells[1, 8] = "Servizi";
oSheet.Cells[1, 9] = "Sconti";
oSheet.Cells[1, 10] = "Totale";
oSheet.Cells[1, 11] = "RID effettuato";
int Indice = 2;
foreach (RecordExcel record in ElencoRecords)
{
oSheet.Cells[Indice, 1] = record.NumeroContratto;
oSheet.Cells[Indice, 2] = record.CodiceCliente;
oSheet.Cells[Indice, 3] = record.Targa;
oSheet.Cells[Indice, 4] = record.ImportoTassa;
oSheet.Cells[Indice, 5] = record.CostoContratto;
oSheet.Cells[Indice, 6] = record.Spese;
oSheet.Cells[Indice, 7] = record.Commissioni;
oSheet.Cells[Indice, 8] = record.Servizi;
oSheet.Cells[Indice, 9] = record.Sconto;
oSheet.Cells[Indice, 10] = record.Totale;
oSheet.Cells[Indice, 11] = ImportoXML(PercorsoXML, record.CodiceCliente);
Indice++;
}
}
if (oApp.Application.Sheets.Count < 1)
{
oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oBook.Worksheets.Add("", "", "", "");
}
else
{
oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oApp.Worksheets[1];
}
string PercorsoFileElaborato = string.Format ("{0}_{1}.xls", filename.Replace (".xlsx", "").Replace (".xls", ""),Guid.NewGuid());
oBook.SaveAs(PercorsoFileElaborato, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing,
false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
oBook.Close(true, null, null);
oApp.Quit();
//////
}