per favore: ho bisogno di un aiuto... su questo problema sto perdendo la testa da giorni...
Si tratta di questo: debbo sviluppare una pagina asp.net (c#) che mi generi un file excel (il quale conterrà un certo report in base ad una serie di dati... bla bla bla)
Sono ancora fermo alla fase di test...
allora:
Il sistema sul quale sto testando è windows xp professional con net framework 2.0 e office 2007 eng version.
Mi sono installato le PIAs (http://www.microsoft.com/downloads/details.aspx?familyid=59daebaa-bed4-4282-a28c-b864d8bfa513&displaylang=en) ed ho importato nella bin dell'applicazione le seguenti dll
- Interop.Excel.dll
- Interop.Microsoft.Office.Core.dll
- Interop.Microsoft.Office.Interop.Excel.dll
- Interop.Office.dll
- Interop.VBIDE.dll
Sto lavorando ad una semplice pagina di test che genera (dovrebbe generare) un file excel...
questo il codice (il try {} catch {} è commentato...) :
public void Create()
{
System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
string strCurrentDir = "c:\\il_path_prescelto\\";
Microsoft.Office.Interop.Excel.Application oXL;
Microsoft.Office.Interop.Excel._Workbook oWB;
Microsoft.Office.Interop.Excel._Worksheet oSheet;
Microsoft.Office.Interop.Excel.Range oRng;
//try
{
GC.Collect();// clean up any other excel guys hangin' around...
oXL = new Microsoft.Office.Interop.Excel.Application();
oXL.Visible = false;
//Get a new workbook.
oWB = (Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add(System.Reflection.Missing.Value));
oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;
//get our Data
oSheet.Cells[1, 1] = "ci metto questo";
//Format A1:Z1 as bold, vertical alignment = center.
oSheet.get_Range("A1", "Z1").Font.Bold = true;
oSheet.get_Range("A1", "Z1").VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
//AutoFit columns A:Z.
oRng = oSheet.get_Range("A1", "Z1");
oRng.EntireColumn.AutoFit();
oXL.Visible = false;
oXL.UserControl = false;
string strFile = "report" + System.DateTime.Now.Ticks.ToString() + ".xls";
oWB.SaveAs(
strCurrentDir + strFile
, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal
, null, null, false, false
, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, false, false, null, null, null
);
// Need all following code to clean up and extingush all references!!!
oWB.Close(null, null, null);
oXL.Workbooks.Close();
oXL.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(oRng);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oXL);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWB);
oSheet = null;
oWB = null;
oXL = null;
GC.Collect(); // force final cleanup!
}
/*
catch (Exception theException)
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat(errorMessage, theException.Message);
errorMessage = String.Concat(errorMessage, " Line: ");
errorMessage = String.Concat(errorMessage, theException.Source);
//Response.Write( errorMessage );
}
*/
}
}
protected void Page_Load(Object sender, EventArgs e)
{
ExcelCreator my_excelCreator = new ExcelCreator();
my_excelCreator.Create();
}
Ebbene... quando provo a lanciare la pagina vien fuori questo errore:
-------------------------------------------------------------------------------
Microsoft Office Excel cannot open or save any more documents because there is not enough available memory or disk space.
• To make more memory available, close workbooks or programs you no longer need.
• To free disk space, delete files you no longer need from the disk you are saving to.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.
Dettagli eccezione: System.Runtime.InteropServices.COMException: Microsoft Office Excel cannot open or save any more documents because there is not enough available memory or disk space.
• To make more memory available, close workbooks or programs you no longer need.
• To free disk space, delete files you no longer need from the disk you are saving to.
Errore nel codice sorgente:
Riga 29: oXL.Visible = false;
Riga 30: //Get a new workbook.
Riga 31: oWB = (Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add(System.Reflection.Missing.Value));
Riga 32: oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;
Riga 33:
File di origine: c:\Inetpub\wwwroot\STYLGRAND\excel_doc.aspx Riga: 31
-------------------------------------------------------------------------------
Proprio non capisco che razza dfi errore possa essere... escludo assolutamente si tratti di un problema di memoria (da task manager la situazione appare assolutamente normale).
Vi prego vi prego... sono giorni e giorni che vado errando su google alla ricerca di una soluzione...
Qualcuno di quelli che legge questo forum ha mai generato un file excel con le PIAs? Mi date una dritta per favore?
Grazie infinite,
Francesco.