C#将剪贴板内容粘贴到Excel工作表
正如标题所说,我尝试将剪贴板中的内容粘贴到Excel中。C#将剪贴板内容粘贴到Excel工作表
我下面的代码:
Clipboard.SetText(html);
sheet.Range("A1").Value = Clipboard.GetText();
实际上,可变HTML包含HTML代码的文件,当我这样做,我其实如果我只粘贴HTML内容纳入范围,但是,打开Excel并手动完成,选择性粘贴...我可以粘贴HTML代码,但它将代码转换为真正的表格而不是HTML代码,这是我想要的真实结果,而无需手动完成。
Excel.Range.Copy() paste with Clipboard.GetText()
另一种方法是:
foreach (Excel.Worksheet sheet in workbook.Sheets)
{
foreach (Excel.Shape shape in sheet.Shapes)
{
Clipboard.SetText(html);
//doesn't work:
sheet.Range("A1").Value = sheet.PasteSpecial(Clipboard.GetText());
sheet.PasteSpecial(Clipboard.GetText()); //throws error
}
}
但这种方式并没有工作过。我可以使用html - >图像来粘贴图像,但实际值应该可以访问,而不是图片。
希望有人可以澄清如何解决它。
谢谢。
您可以尝试使用SetData
而不是SetText
:
Clipboard.SetData(DataFormats.Html, html);
字符串复制到剪贴板,然后将其标记为HTML(如果不工作你的情况,SetText
可能是确定)。
在您想插入发生的单元格区域到PasteSpecial
电话会议,以考虑您的意见:
ActiveSheet.Range("A1").PasteSpecial(
Excel.Enums.XlPasteType.xlPasteAll,
Excel.Enums.XlPasteSpecialOperation.xlPasteSpecialOperationNone,
false, false);
注意使用Value
财产从未副本分配的单元格的新值任何格式等。
我正在考虑这种方式,但它仍然引发了一个例外,我使用NetOffice而不是Microsoft.Office这就是为什么,因为我可以做一个没有参数的.PasteSpecial库。我会等待管理员的回复,询问是否可能是汇编问题或错误实施。它似乎与编译:sheet.Range(“A1”)。PasteSpecial(Excel.Enums.XlPasteType.xlPasteAll,Excel.Enums.XlPasteSpecialOperation。xlPasteSpecialOperationAdd,false,false);但仍然有一些异常错误。 – mike27015 2013-03-27 09:11:32
我用xlPasteSpecialOperationAdd做了它,因为我已经有了一个模板的现有值......并且想要从之前的现有值进行计算,如果我用xlPasteSpecialOperationNone离开它,保留旧值但仍然会出现异常错误。阅读RTFM,因为你甚至给了我正确的操作。 – mike27015 2013-03-27 09:26:30
仅供复制使用 Clipboard.SetText(html); sheet.Range(“A1”)。PasteSpecial(); 他不喜欢Clipboard.SetData(DataFormats.Htlm,html); – mike27015 2013-03-27 09:48:35
使用此: xlWorkSheet.PasteSpecial(Missing.Value,false,false,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
//下面是完整的代码
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
xlApp.Visible = true;
xlApp.UserControl = true;
xlApp.WindowState = Excel.XlWindowState.xlMaximized;
xlWorkBook = xlApp.Workbooks.Add(Type.Missing);
// xlWorkBook = xlApp.Workbooks.Open(excel_filename);
xlApp.ActiveWorkbook.Sheets[1].Activate();
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.PasteSpecial(Missing.Value, false, false, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
xlWorkBook.SaveAs(save_file_name);
Console.WriteLine("saved file name" + save_file_name);
xlWorkBook.Close();
xlApp.Quit();
我设法用
Clipboard.GetData("XML Spreadsheet");
然后获取剪贴板复制的单元格,之后我做了一些的复制粘贴在我的代码,我把它放回
Clipboard.SetData("XML Spreadsheet", originalObject);
快乐编码!
可能重复? http://stackoverflow.com/questions/10147152/excel-paste-special-and-add-operation – Nahum 2013-03-27 08:50:08