2011-02-16 14 views
6

Tengo WPF DataGrid (VS2010 C#). Copié los datos de DataGrid en el Portapapeles y los escribí en un archivo de Excel. A continuación está mi código.Copie texto de WPF DataGrid en Portapapeles en Excel

dataGrid1.SelectAllCells(); 
dataGrid1.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader; 
ApplicationCommands.Copy.Execute(null, dataGrid1); 
dataGrid1.UnselectAllCells(); 
string path1 = "C:\\test.xls"; 
string result1 = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue); 
Clipboard.Clear(); 
System.IO.StreamWriter file1 = new System.IO.StreamWriter(path1); 
file1.WriteLine(result1); 
file1.Close(); 

Todo funciona bien, excepto al abrir el archivo de Excel que me da dos advertencia:

"El archivo que está intentando abrir 'test.xls' está en un formato diferente de lo especificado por la extensión de archivo. Verifique que el archivo no está dañado y es de una fuente confiable anterior al abriendo el archivo. ¿Desea abrir el archivo ahora? "

"Excel ha detectado que 'test.xls' es un archivo SYLK, pero no puede cargarlo."

Pero después de hacer clic a través de él, todavía se abre el archivo de Excel OK y los datos se formatean como debería. Pero no puedo encontrar la forma de deshacerme de las dos advertencias antes de que el archivo Excel esté abierto.

+0

Creo que es porque el archivo no tiene la extensión correcta. –

+0

Excel tiene una extensión de ".xls" ... ¿no es así? – KMC

+0

Las hojas de cálculo de Excel son .xls. Pero Excel también puede abrir otros formatos de archivo, como un archivo de valores separados por comas (.csv) –

Respuesta

4

Es necesario utilizar CSV como extensión. Xls es la extensión de archivo de Excel. Entonces

string path1 = "C:\\test.csv"; 

debería funcionar.