J'utilise le code ci-dessous pour copier des données à partir de DataGridView
, puis coller dans un fichier Excel.Worksheet.PasteSpecial Fonction coller des données en tant qu'image bitmap
private void copyAlltoClipboard()
{
//to remove the first blank column from datagridview
dataGridView1.RowHeadersVisible = false;
dataGridView1.SelectAll();
DataObject dataObj = dataGridView1.GetClipboardContent();
if (dataObj != null)
Clipboard.SetDataObject(dataObj);
}
private void button3_Click_1(object sender, EventArgs e)
{
copyAlltoClipboard();
Microsoft.Office.Interop.Excel.Application xlexcel;
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlexcel = new Excel.Application();
xlexcel.Visible = true;
xlWorkBook = xlexcel.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
Excel.Range CR = (Excel.Range)xlWorkSheet.Cells[1, 1];
CR.Select(); // CR is a COM Object
// WorkSheet.PasteSpecial(object,object,object,object,object);
xlWorkSheet.PasteSpecial(CR, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);
}
cela donne ce résultat dans le fichier Excel:
Il fonctionne très bien sur presque toutes les machines, mais quelques machines dans la production, il colle comme image de point noir (je suppose qu'il est convertir les données en représentation bitmap). Voici ce qu'il colle sur certaines machines:
J'ai essayé d'utiliser la fonction PasteSpecial()
. Mais alors il ne copiera rien dans aucune machine. Je ne suis pas sûr de ce qui ne va pas ici.
Je n'ai pas pu trouver la différence en termes de configuration dans les machines sur lesquelles il fonctionne bien et dans lesquelles il ne fonctionne pas. Une idée de comment gérer cela et afficher des données au lieu de l'image dans toutes les machines?