Worksheet.PasteSpecial 将数据粘贴为位图图像的功能
Worksheet.PasteSpecial Function pasting data as bitmap image
我正在使用以下代码从 DataGridView
复制数据,然后粘贴到 excel 文件中。
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);
}
这会在 excel 文件中产生此结果:
它在几乎所有机器上都能很好地工作,但在生产中的少数机器上,它粘贴为黑点图片(我猜它正在以位图表示形式转换数据)。这是它在某些机器上粘贴的内容:
我尝试使用函数 PasteSpecial()
。但是它不会在任何机器上复制任何东西。我不确定这里出了什么问题。
我找不到运行良好和运行不正常的机器在配置方面的差异。
知道如何处理这个问题并在所有机器上显示数据而不是图片吗?
我也遇到了这个问题。上述代码的修复是正确配置 PasteSpecial 方法。该方法的第一个参数应该是格式。如下更正 button3_Click_1
的最后一行,一切都应该有效。
xlWorkSheet.PasteSpecial("Text", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);
似乎已解决该问题的另一个选项是按如下方式更改该行。这表明粘贴的文本不是 link 也不是图标。
xlWorkSheet.PasteSpecial(CR, false, false, Type.Missing, Type.Missing, Type.Missing, true);
我正在使用以下代码从 DataGridView
复制数据,然后粘贴到 excel 文件中。
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);
}
这会在 excel 文件中产生此结果:
它在几乎所有机器上都能很好地工作,但在生产中的少数机器上,它粘贴为黑点图片(我猜它正在以位图表示形式转换数据)。这是它在某些机器上粘贴的内容:
我尝试使用函数 PasteSpecial()
。但是它不会在任何机器上复制任何东西。我不确定这里出了什么问题。
我找不到运行良好和运行不正常的机器在配置方面的差异。 知道如何处理这个问题并在所有机器上显示数据而不是图片吗?
我也遇到了这个问题。上述代码的修复是正确配置 PasteSpecial 方法。该方法的第一个参数应该是格式。如下更正 button3_Click_1
的最后一行,一切都应该有效。
xlWorkSheet.PasteSpecial("Text", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);
似乎已解决该问题的另一个选项是按如下方式更改该行。这表明粘贴的文本不是 link 也不是图标。
xlWorkSheet.PasteSpecial(CR, false, false, Type.Missing, Type.Missing, Type.Missing, true);