正如标题所说,我尝试将剪贴板中的内容粘贴到Excel中。
我已经关注了代码:
Clipboard.SetText(html);
sheet.Range("A1").Value = Clipboard.GetText();
实际上,变量html包含一个html代码文件,当我这样做时,我实际上只将html内容粘贴到Range中,但是,如果我打开Excel并手动执行,请选择Paste Special ...我可以粘贴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做 - >>图像和粘贴图像,但实际值应该是可访问的而不是图片。
希望有人能澄清如何解决它。
感谢。
答案 0 :(得分:2)
您可以尝试使用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
属性从不为单元格指定新值会复制任何格式等。
答案 1 :(得分:1)
我简单的C#复制和粘贴(从Input / Sheet [1]到Output / Sheet [1])
using System.Reflection;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
// prepare Input
Excel.Application xlApp = new Excel.Application();
xlApp.DisplayAlerts = false;
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(fileNameIn);
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange; //I copy everything
// prepare Output
Excel.Application oXL = new Excel.Application();
oXL.DisplayAlerts = false;
Excel.Workbook mWorkBook = oXL.Workbooks.Open(fileNameOut, 0, false, 5,
"", "", false, Excel.XlPlatform.xlWindows,
"", true, false, 0, true, false, false);
Excel.Worksheet mWSheet1 = mWorkBook.Sheets[1];
// make Copy&Paste in PC memory
xlRange.Copy(Type.Missing);
Excel.Range targetRange = mWSheet1.Cells[11, 1]; //initial cell for Paste
mWSheet1.Paste(targetRange);
// save Output
mWorkBook.SaveAs(fileNameOut, Excel.XlFileFormat.xlWorkbookNormal,
Missing.Value, Missing.Value,
Missing.Value, Missing.Value,
Excel.XlSaveAsAccessMode.xlExclusive,
Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value);
// clean the waste !
mWorkBook.Close(Missing.Value, Missing.Value, Missing.Value);
mWSheet1 = null; mWorkBook = null; oXL.Quit();
GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers();
GC.Collect(); GC.WaitForPendingFinalizers();
Marshal.ReleaseComObject(xlRange); Marshal.ReleaseComObject(xlWorksheet);
xlWorkbook.Close(); Marshal.ReleaseComObject(xlWorkbook);
xlApp.Quit(); Marshal.ReleaseComObject(xlApp);
答案 2 :(得分:0)
使用此: xlWorkSheet.PasteSpecial(Missing.Value,false,false,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
//下面是完整的代码
SELECT ID FROM Log
WHERE Worker_Name='$nameW' and Employer_Name='$nameE' ORDER BY ID DESC LIMIT 1
答案 3 :(得分:0)
我设法通过
从剪贴板中获取复制的单元格 Clipboard.GetData("XML Spreadsheet");
然后,在我通过我的代码进行了一些复制粘贴后,我将其放回
Clipboard.SetData("XML Spreadsheet", originalObject);
快乐的编码!
答案 4 :(得分:0)
此代码用于转储html字符串到excel
implode(PHP_EOL, $matches[0]);