Salve,
ho un nuovo problema, avrei l'esigenza di svuotare il file ogni volta che qualcuno clicca sul pulsante di estrazione, perchè altrimenti ogni volta i dati vengono concatenati e non è quello che voglio. Qui il mio script:
codice:
protected void ScriviSuExcel(object sender, EventArgs e)
{
string path = "path file excel";
StreamWriter sw = new StreamWriter("path file eccezioni");
OleDbConnection connection = null;
OleDbCommand command = null;
string queryString = null;
int cont = 0;
queryString = "query1";
DataSet data = new DataSet();
data = GetData(queryString);
connection = new OleDbConnection();
command = new OleDbCommand();
try
{
connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties = 'Excel 8.0;HDR=YES;' ";
connection.Open();
command.Connection = connection;
command.CommandText = "DELETE FROM [Foglio1$]";
command.ExecuteNonQuery();
while (data.Tables[0].Rows.Count > cont)
{
command.CommandText = "INSERT INTO [Foglio1$] (Campo1,Campo2) VALUES ('" + data.Tables[0].Rows[cont]["Campo1"].ToString() + "','" + data.Tables[0].Rows[cont]["Campo2"].ToString() + "')";
command.ExecuteNonQuery();
cont++;
}
command.Dispose();
command = null;
connection.Dispose();
connection = null;
HttpContext.Current.Response.Redirect("./file.xls");
Response.Redirect("file.xls");
sw.Close();
}
catch (Exception e1)
{
sw.WriteLine("Exception: " + e1.Message);
sw.WriteLine("Query: "+ command.CommandText);
sw.Close();
connection.Close();
}
}
Ho provato ad inserire una delete sul foglio prima di cominciare a ciclare il dataset, ma l'applicazione va in Exception riportando il seguente messaggio:
codice:
Exception: Deleting data in a linked table is not supported by this ISAM.
Query: DELETE FROM [Foglio1$]
l'alternativa sarebbe mantenere un template dell'excel originario e ricopiarlo ogni volta che lancio lo script, ma vorrei prima capire se c'è un modo di svuotare l'excel.
Cercasi suggerimenti, grazie.