选择,从 IE 复制并粘贴到 Excel
Posted
技术标签:
【中文标题】选择,从 IE 复制并粘贴到 Excel【英文标题】:Select, Copy from IE and paste to Excel 【发布时间】:2011-07-29 02:10:54 【问题描述】:所以基本问题是,我怎样才能使表格从 IE 中很好地复制粘贴到 Excel 或 OpenOffice calc。 页面位于:http://tuudik.lohv.eu/Asjad/EURXML/
表格是由 php 代码动态创建的。有一个带有 tekst "Vali tabel!" 的按钮。这意味着,它选择表。然后我想复制它,例如使用 CTRL+C 并将其粘贴到电子表格中。
什么是最好的选择?我是否应该创建一个隐藏的 div,然后在表格中具有相同的数据但以其他方式格式化?
此外,任何人都知道如何制作“Vali kõik!”按钮工作,它会自动将内容复制到剪贴板?
【问题讨论】:
网络链接已失效,使问题不太清楚.. 【参考方案1】:根据我的经验,从 html 页面复制最好通过没有格式的文本编辑器完成。这样,内容通常以某种形式(通常是制表符)分隔,从而更容易粘贴到电子表格。
从浏览器复制表格 在记事本中粘贴、选择、再次复制 在电子表格应用程序中粘贴可能不会直接回答您的问题,但如果您能以某种方式使用制表符分隔符将数据复制为纯文本(如隐藏的 div 或其他内容) - 您可能会在将其粘贴到支持各种类型的电子表格中取得更大的成功格式化。
【讨论】:
是的,我知道这种方式。我的目标是让这个表中的复制尽可能简单。所以在这个过程中使用记事本并不是出路。 如果你能找到一种方法(在 javascript 中)来消除前两个步骤,那么你可能是金子。我还没有遇到过必须自己做这件事的情况。【参考方案2】:为什么不修改您的 PHP 脚本以将页面内容直接写入 Excel,将内容写入 Excel 单元格而不是 HTML
【讨论】:
@mark-baker 让我为您提供有关背景的更多信息。 ATM 一位会计师根据位于此处的欧洲央行货币主页制作电子表格:ecb.europa.eu/stats/exchange/eurofxref/html/index.en.html 但这不像她需要的表格,她需要像我之前的链接一样的表格。因此,她在 Excel 中创建了它,添加了缺失的文本,并且只选择了所需的货币。然后当表格完成后,看起来和我的页面一样,她将它从 Excel 复制到 SAP。我的目标是,那个会计师可以直接从那里复制到 SAP。之前没写过,很复杂。 当然,最好的选择是使用 SAP 本身的 BDC、CATT、LSMW 等工具将数据从原始 Excel 文件直接传输到 SAP,而不是使用所有这些中间层复杂性 @mark-baker - 我不熟悉这些工具。更准确地说,会计师是我的未婚夫,所以我试图让她的工作更轻松一些。虽然我无权访问 SAP。使用稍微不同的方法,尝试 excel 中的获取外部数据功能
(我在 Using Excel 2010 上进行了测试,但 2007 年类似,2003 年的版本略有不同)
从菜单数据/获取外部数据/从网络
打开一个表单:
粘贴地址;(例如http://bit.ly/Kurss)然后点击Go 网页已显示 向下滚动到您想要的表格 用黄色的小箭头选择它 点击导入瞧,数据在 excel 中,作为来自后台查询的未格式化数据!
然后,每当您想更新数据时,只需单击刷新
【讨论】:
其实数据本身可以很好的复制到Excel中。所以没问题,我需要数据更像 Excel 表格,这样 SAP 会更好地理解表格,我的意思是它的剪贴板副本。【参考方案4】:我需要一种方法来复制 html 表格信息并粘贴到 excel 中。我使用了多种技术组合。首先我添加了这段代码,这样我就可以自动将数据复制到客户端电脑的粘贴缓冲区中。
How do I copy to the clipboard in JavaScript?
// Copies a string to the clipboard. Must be called from within an
// event handler such as click. May return false if it failed, but
// this is not always possible. Browser support for Chrome 43+,
// Firefox 42+, Safari 10+, Edge and IE 10+.
// IE: The clipboard feature may be disabled by an administrator. By
// default a prompt is shown the first time the clipboard is
// used (per session).
function copyToClipboard(text)
if (window.clipboardData && window.clipboardData.setData)
// IE specific code path to prevent textarea being shown while dialog is visible.
return clipboardData.setData("Text", text);
else if (document.queryCommandSupported && document.queryCommandSupported("copy"))
var textarea = document.createElement("textarea");
textarea.textContent = text;
textarea.style.position = "fixed"; // Prevent scrolling to bottom of page in MS Edge.
document.body.appendChild(textarea);
textarea.select();
try
return document.execCommand("copy"); // Security exception may be thrown by some browsers.
catch (ex)
console.warn("Copy to clipboard failed.", ex);
return false;
finally
document.body.removeChild(textarea);
然后我创建了一个复制字符串。用制表符 \t 分隔单元格值,并用换行符 \n 分隔行。请参阅下面的示例。
我使用 PHP 创建复制数据字符串。
//-- Create data for a single table row
//-- We needed to escape single quotes for HTML and javascript
$copy_data = str_replace("'","\'",$col1."\t".$col2."\t".$col3);
//-- Create data for a multi rows
//-- Separate multiple rows by \n but needs to be escaped so use \\n
$copy_data = str_replace("'","\'",$col1."\t".$col2."\t".$col3."\\n".$col1."\t".$col2."\t".$col3."\\n".$col1."\t".$col2."\t".$col3);
然后我将它放在网页上的复制按钮中。
<a href="#" onclick="copyToClipboard('<?=$copy_data?>')">Copy</a>
然后单击“复制”链接将数据放入复制缓冲区。接下来转到Excel并单击要粘贴数据的单元格,然后进行粘贴。
【讨论】:
以上是关于选择,从 IE 复制并粘贴到 Excel的主要内容,如果未能解决你的问题,请参考以下文章