Ciao,
un problema (quello non accennato nel post l'ho risolto "aggirandolo"), questo dell'esportare solo la parte di DataTable che vedo (nella DataGridView) l'ho invece solo parzialmente risolto.
Praticamente durante la "costruzione" della nuova DataTable (dtExport) ho omesso la parte in cui recupera il tipo di formattazione che ha la DataGridView, cioè non gli ho più detto di "guardare" se sono Bool, DateTime, String etc etc .
L'ho fatto togliendo una parte di codice :
private void BtnTEST2_Click(object sender, EventArgs e)
{
DataTable dtExport = new DataTable();
string OggettoFile = "";
string DataFile = "";
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
dtExport.Columns.Add(column.HeaderText); //,column.ValueType); <<<<Ho tolto questa parte
}
......
....
..
..
}
Ora però , se nella DataGridView avevo le date impostate così :
Ora nel file Excel me le ritrovo così :
Gli orari sulla DataGridView li ho così :
Ora nel file Excel me le ritrovo così :
Ho cercato riformattarle in MM/dd/yyyy e hh:mm provando con due modi .
Il primo formattando la colonna che contiene le Date e gli Orari .
ws.Column(1).Style.DateFormat.Format = "dd/MM/yyyyy";
ws.Column(2).Style.DateFormat.Format = "hh:mm";
ws.Column(3).Style.DateFormat.Format = "hh:mm";
ws.Column(12).Style.DateFormat.Format = "dd/MM/yyyyy";
Ma non ha funzionato.
Poi ho provato anche con un ciclo For :
for (int i = 1; i <= dtExport.Rows.Count + 1; i++)
{
for (int j = 1; j <= dtExport.Columns.Count; j++)
{
ws.Cell(i, j).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center);
ws.Cell(i, j).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
}
ws.Cell(i, 13).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left);
ws.Cell(i,1).Style.DateFormat.Format = "MM/dd/yyyy";
ws.Cell(i, 2).Style.DateFormat.Format = "hh:mm";
ws.Cell(i, 3).Style.DateFormat.Format = "hh:mm";
ws.Cell(i, 12).Style.DateFormat.Format = "MM/dd/yyyy";
}
Però con entrambi i modi nulla, anche se gli altri tipi di modifiche me lo fa fare (inserire immagine con logo, cancellare colonne, inserire righe, cambiare font e dimensioni del testo, modificare l'allineamento, etc ,etc.
Altra cosa strana è che anche se agisco direttamente sul file excel creato e cerco di formattare la colonna come Data, o come Ora, in realtà non succede niente...
Ho paura che devo proprio trovare il modo di mantenere la formattazione originale :
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
dtExport.Columns.Add(column.HeaderText,column.ValueType);
}
e trovare il modo che non mi dia errore se trova vuoto il campo Data o Ora o quello Bool,
Saluti.