Un saluto a tutti, ho pubblicato una'applicazione Web su aruba in cui in una pagina richiedo un report su excel di dati persistenti su sqlserver, in locale non ho problemi in quanto sulla mia macchina ho installato Ms Office 2007 e sul progetto sviluppato con Visual Studio 2015 in C# ho aggiunto il riferimento all'estensione Microsoft.Office.Interop.Excel 14.0.0.0 non riesco a capire l'errore generato su Aruba.it ... ecco il codice
protected void BtnEsporta_Click(object sender, ImageClickEventArgs e)
{
Microsoft.Office.Interop.Excel.Application app;
_Workbook wB;
_Worksheet foglio;
v =(int[]) ViewState["v"];
using (QuestDataContext qx = new QuestDataContext())
{
var dmdQuest = from dmd in qx.Domande
join comp in qx.Composizione on dmd.id_Dmd equals comp.id_Dmd
join quest in qx.Questionari on comp.id_Quest equals quest.id_Quest
where quest.id_Quest == v[DDLQuest.SelectedIndex]
select new {comp.id_Composiz, comp.numdmd, dmd.domanda,dmd.tipo };
var selPart = from part in qx.Partecipanti
where part.id_Quest == v[DDLQuest.SelectedIndex]
where part.svolto == true
select part;
try
{
app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = true;
wB = (_Workbook)(app.Workbooks.Add(Missing.Value));
foglio = (_Worksheet)wB.ActiveSheet;
foglio.Name = DDLQuest.SelectedValue;
foglio.get_Range("a1", "z1").ColumnWidth = 8;
int x = 1;
foreach (var dmd in dmdQuest)
{
StringBuilder s = new StringBuilder();
StringBuilder z = new StringBuilder();
char c = (char)(64 + x);
s.Append(c);
s.Append(1);
z.Append(c);
z.Append(5);
foglio.get_Range(s.ToString(),z.ToString()).Merge();
foglio.get_Range(s.ToString(), z.ToString()).HorizontalAlignment = XlHAlign.xlHAlignCenter;
foglio.get_Range(s.ToString(), z.ToString()).Font.Bold = true;
foglio.get_Range(s.ToString(), z.ToString()).VerticalAlignment =
XlVAlign.xlVAlignCenter;
foglio.get_Range(s.ToString(), z.ToString()).ColumnWidth = 11;
foglio.get_Range(s.ToString(), z.ToString()).RowHeight = 45;
foglio.get_Range(s.ToString(), z.ToString()).Orientation = 90;
foglio.get_Range(s.ToString(), z.ToString()).Borders.LineStyle = XlLineStyle.xlDouble;
foglio.get_Range(s.ToString(), z.ToString()).Value = dmd.domanda ;
foglio.Range[s.ToString()].WrapText = true;
x++;
}
foglio.get_Range("a6", "z2000").HorizontalAlignment = XlHAlign.xlHAlignCenter;
foglio.get_Range("A6", "z2000").Font.Bold = true;
foglio.get_Range("A6", "z2000").VerticalAlignment =
XlVAlign.xlVAlignCenter;
int ix = 6;
foreach (Partecipanti part in selPart)
{
var risposte = from ris in qx.Risposte
join comp in qx.Composizione on ris.id_Composiz equals comp.id_Composiz
join dmd in qx.Domande on comp.id_Dmd equals dmd.id_Dmd
where ris.id_Partecipante == part.id_Partecipante
select new { dmd.id_Dmd, dmd.domanda, ris.tipo, ris.voto, ris.SiNo, ris.aperta };
int j = 1;
foreach (var rx in risposte)
{
switch (rx.tipo)
{
case 1:
foglio.Cells[ix, j] = rx.voto;
break;
case 2:
foglio.Cells[ix, j] = rx.SiNo;
break;
case 3:
foglio.Cells[ix, j] = rx.aperta;
break;
}
j++;
}
if (chkAnonimo.Checked == false)
{
foglio.Cells[ix, j++] = part.cognome;
foglio.Cells[ix, j++] = part.nome;
foglio.Cells[ix, j] = (part.classe != null) ? part.classe : "";
}
ix++;
}
}
catch (Exception ex)
{
}
}
}
Modificato da luigi.marano il 25 aprile 2016 22.15 -