Hola que tal, bueno yo como lo e hecho es con el iTextSharp, asi no importa tener la utileria del Office
Esto es lo que va en el boton de Exportar a Excel
Código C#:
Ver originalprivate void BotExcel_Click(object sender, EventArgs e)
{
try
{
ArrayList titulos = new ArrayList();
DataTable datosTabla = new DataTable();
//Especificar ruta del archivo con extensión de EXCEL.
OtrosFormatos OF = new OtrosFormatos(Application.StartupPath+ @\\test.xls);
//obtenemos los titulos del grid y creamos las columnas de la tabla
foreach (DataGridViewColumn item in dataGridView1.Columns)
{
titulos.Add(item.HeaderText);
datosTabla.Columns.Add();
}
//se crean los renglones de la tabla
foreach (DataGridViewRow item in dataGridView1.Rows)
{
DataRow rowx = datosTabla.NewRow();
datosTabla.Rows.Add(rowx);
}
//se pasan los datos del dataGridView a la tabla
foreach (DataGridViewColumn item in dataGridView1.Columns)
{
foreach (DataGridViewRow itemx in dataGridView1.Rows)
{
datosTabla.Rows[itemx.Index][item.Index] = dataGridView1[item.Index, itemx.Index].Value;
}
}
OF.Export(titulos, datosTabla);
Process.Start(OF.xpath);
MessageBox.Show("Proceso Completo");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} //Fin del Evento Clic del Botón
Esta seria la clase que se encargaria de exportar:
Código C#:
Ver originalpublic void ExportCSV(ArrayList titulos, DataTable datos)
{
try
{
FileStream fs = new FileStream(ruta, FileMode.Create,
FileAccess.ReadWrite);
w = new StreamWriter(fs);
string comillas = char.ConvertFromUtf32(34);
StringBuilder CSV = new StringBuilder();
//Encabezados
for (int i = 0; i < titulos.Count; i++)
{
if (i != (titulos.Count - 1))
{
CSV.Append(comillas + titulos[i].ToString() + comillas + ",");
}
else
{
CSV.Append(comillas + titulos[i].ToString() + comillas + Environment.NewLine);
}
}
// se generan datos
for (int i = 0; i < datos.Rows.Count; i++)
{
for (int j = 0; j < datos.Columns.Count; j++)
{
if (j != (titulos.Count - 1))
{
CSV.Append(comillas + datos.Rows[i][j].ToString() + comillas + ",");
}
else
{
CSV.Append(comillas + datos.Rows[i][j].ToString() + comillas + Environment.NewLine);
}
}
}
w.Write(CSV.ToString()); //se escribe la cadena en el archivo
w.Close();
}
catch (Exception ex)
{
throw ex;
}
} //Fin de ExportCSV
En la clase anexa esto:
Código C#:
Ver originalStreamWriter w;
string ruta;
public string xpath { get { return ruta; } set { value = ruta; }}
/// <summary>
/// Constructor que establece el path del archivo
/// </summary>
/// <param name="path"></param>
public OtrosFormatos(string path)
{
ruta = @path;
}
Yo con el que tengo un poco de problemas es con el open office, por que me toma la informacíon como si la quisiera exportar
espero te sirva