Este código sirve para guardar un DataTable en un Excel, yo lo utilizo para agregar la función de exportar a Excel en la aplicaciones donde utilizo Grids, ya que utilizo una versión del TDBGrid que no le funciona bien el exportar a.
public static void ExportarExcelDataTable(DataTable dt,string RutaExcel) { const string FIELDSEPARATOR = "\t"; const string ROWSEPARATOR = "\n"; StringBuilder output = new StringBuilder(); // Escribir encabezados foreach (DataColumn dc in dt.Columns) { output.Append(dc.ColumnName); output.Append(FIELDSEPARATOR); } output.Append(ROWSEPARATOR); foreach (DataRow item in dt.Rows) { foreach (object value in item.ItemArray) { output.Append(value.ToString().Replace('\n',' ').Replace('\r',' ').Replace('.',',')); output.Append(FIELDSEPARATOR); } // Escribir una línea de registro output.Append(ROWSEPARATOR); } // Valor de retorno // output.ToString(); StreamWriter sw = new StreamWriter(RutaExcel); sw.Write(output.ToString()); sw.Close(); }
exelente!!!! nada mas que manda mal los acentos, de todos modos gracias por el gran aporte me ha servido mucho
ResponderEliminarPara no tener problemas con los acentos definir:
ResponderEliminarStreamWriter sw = new StreamWriter(RutaExcel, false, System.Text.Encoding.GetEncoding("iso-8859-1"));
Mil gracias! esto estaba buscando anteriormente lo hacia escribiendo celda por celda y tardaba mucho, pero esto esta perfecto !!
ResponderEliminarIncreíble!!! Muchas gracias por la ayuda. Como extra, me gustaría comentar que también se puede definir una variable de tipo SaveFileDialog para obtener la ruta de guardado en el archivo, claro, tomando en cuenta que no se ha pedido antes.
ResponderEliminarGracias por el aporte. Se aprecia.
Muchas gracias, me ayudo mucho este codigo
ResponderEliminarLo del StreamWriter no me funciona, lo tengo que escribir después de haber llamado a la función que exporta el Excel?? porque pruebo antes y después y cuando agrego la linea StreamWriter sw = new StreamWriter(RutaExcel, false, System.Text.Encoding.GetEncoding("iso-8859-1")); no se me llena el excel con los datos, Saludos
ResponderEliminarGracias... me ahorro bastante tiempo
ResponderEliminarMe ayudo mucho tu código.. gracias
ResponderEliminarGracias por el codigo, saludos
ResponderEliminarMuy buen aporte, me ahorraste varias lineas de codigo viejito,
ResponderEliminarMuchas gracias. Sos Grande
disculpe, soy novato, pero de que manera de podria usar el codigo compartido? tenemos que instanciarlo? con algun ejemplo porfavor
ResponderEliminarMuchas gracias.
ResponderEliminarPara que funcione el deben agregar la librería:
using System.IO;
Para mi no fue necesario reemplazar los puntos por comas, por lo que modifique la línea de esta forma:
output.Append(value.ToString().Replace('\n', ' ').Replace('\r', ' '));
CESAR ST
Muchas gracias. Me sirvió.
ResponderEliminarMuy bueno, es muy rápido a comparación de otros métodos! Gracias!
ResponderEliminarcual seria el codigo de ruta excel?
ResponderEliminarExcelente aporte muchas gracias y tambien le agregue para guardarlo el archivo con showdialog()
ResponderEliminarSaveFileDialog fichero = new SaveFileDialog();
fichero.Filter = "Excel (*.xls)|*.xls";
if (fichero.ShowDialog() == DialogResult.OK)
{
...
.....
......
StreamWriter sw = new StreamWriter(fichero.FileName, false, System.Text.Encoding.GetEncoding("iso-8859-1"));
.......
........
}
amigo una consulta para poder utilizar el show dialog tengo que referenciar algo?
Eliminar