以下のコードを使用してデータをコピー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 ファイルに生成されます。
ほとんどすべてのマシンでうまく機能しますが、実稼働中のいくつかのマシンでは、黒い点の画像として貼り付けられます(データをビットマップ表現に変換していると思います)。これは、一部のマシンに貼り付けられるものです。
function を使ってみPasteSpecial()
ました。しかし、その後、どのマシンでも何もコピーしません。ここで何が問題なのかわかりません。
正常に動作しているマシンと動作していないマシンの構成の違いを見つけることができませんでした。これを処理し、すべてのマシンで画像の代わりにデータを表示する方法はありますか?