PDA

View Full Version : [C# / vb.Net 2005]Formattazione celle Excel


RaouL_BennetH
18-06-2009, 12:57
Ciao a tutti :)

Con un pò di ricerche e vari adattamenti, sono riuscito a scrivere questo metodo che mi esporta i dati presenti in una griglia su di un foglio di excel.

Il codice è questo:


using System;
using System.Collection.Generics;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.IntropServices;
using Excel = Microsot.Office.Interop.Excel;
using System.Windows.Forms;

namespace UIUtils
{
public class ExportToExcel
{
public static void Export(DataGridView d, string directory, string filename)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory).ToString() + directory;

Process p = null;
try
{
Excel.ApplicationClass exApp = new Excel.ApplicationClass();
exApp.Application.Workbooks.Add(Type.Missing);

for(int i = 0; i < d.Columns.Count; i++)
{
exApp.Cells[1, i + 1] = d.Columns[i].HeaderText;
}

for(int x = 0; x < d.Rows.Count; x++)
{
DataGridViewRow r = d.Rows[x];
for(int j = 0; j < r.Cells.Count; j++)
{
exApp.Cells[x + 2, j + 1] = r.Cells[j].Value;
exApp.Columns.AutoFit();
}
}

if(Directory.Exists(path))
{
exApp.ActiveWorkbook.SaveCopyAs(path + filename);
exApp.ActiveWorkBook.Saved = true;
exApp.Workbooks.Close();
exApp.Quit();
p = new Process();
p.StartInfo.Filename = path + filename;
p.Start();
}
else
{
Directory.CreateDirectory(path);
exApp.ActiveWorkbook.SaveCopyAs(path + filename);
exApp.ActiveWorkBook.Saved = true;
exApp.Workbooks.Close();
exApp.Quit();
p = new Process();
p.StartInfo.Filename = path + filename;
p.Start();
}
}
catch(//blbalbalba);
}
}



Dato che nella griglia sono presenti diversi tipo di formato (data, valuta, etc..)
come potrei fare per formattarli durante l'esportazione?


Grazie mille :)

RaouL.

RaouL_BennetH
18-06-2009, 15:07
Risolto, era davvero banalissimo:

al posto di scrivere il valore:



exApp.Cells[x, y] = riga.Cella[z].Value.ToString();

//basta fare:

exApp.Cells[x, y] = riga.Cella[z].EditedFormattedValue.ToString();