Я использую приведенный ниже код для копирования данных из DataGridView
, а затем вставки в файл excel.Worksheet.PasteSpecial Функция вставки данных в виде растрового изображения
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);
}
это дает этот результат в Ехчел:
Он отлично работает почти на всех машинах, но несколько машин в производстве, она приклеивает как картина черная точка (я предполагаю, что это преобразование данных в растровое представление). Это то, что она наклеивает на некоторых машинах:
Я попытался с помощью функции PasteSpecial()
. Но тогда он не будет копировать что-либо на любой машине. Я не уверен, что здесь происходит не так.
Я не мог найти разницы в конфигурации в машинах, в которых он хорошо работает и в которых он не работает. Любая идея, как справиться с этим и отображать данные вместо изображения на всех машинах?