0

以下のコードを使用してデータをコピー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()ました。しかし、その後、どのマシンでも何もコピーしません。ここで何が問題なのかわかりません。

正常に動作しているマシンと動作していないマシンの構成の違いを見つけることができませんでした。これを処理し、すべてのマシンで画像の代わりにデータを表示する方法はありますか?

4

1 に答える 1

2

私もこの問題に遭遇しました。上記のコードの修正は、PasteSpecial メソッドを正しく構成することです。メソッドの最初のパラメーターは、形式である必要があります。の最後の行をbutton3_Click_1次のように修正すると、すべてが機能するはずです。

xlWorkSheet.PasteSpecial("Text", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);          

問題を修正したように見える別のオプションは、次のように行を変更することです。これは、貼り付けられたテキストがリンクでもアイコンでもないことを示しています。

xlWorkSheet.PasteSpecial(CR, false, false, Type.Missing, Type.Missing, Type.Missing, true);          
于 2016-10-17T18:03:39.807 に答える