我需要实现一个功能:当用户从Microsoft Excel复制单元格并将它们粘贴到Reaction表中时,它也需要携带它们的样式(比如bold、italicized或下划线).
我使用剪贴板API获取数据,并成功地获取了文本/纯文本或文本/html格式的数据.
const handlePaste = async (event: any) => {
const clipboardContents = await navigator.clipboard.read();
var textHtmlBlob : any;
for (const item of clipboardContents)
{
textHtmlBlob = await item.getType("text/html");
}
console.log(await textHtmlBlob.text());
}
这样,我就得到了HTML表.我看到它有像"xl65"
,"xl66"
,"xl67"
这样的课程.
<table border="0" cellpadding="0" cellspacing="0" width="64" style="border-collapse:collapse;width:48pt">
<tbody>
<tr height="19" style="height:14.5pt">
<td height="19" class="xl65" align="right" width="64" style="height:14.5pt;width:48pt">1</td>
</tr>
</tbody>
</table>
我调查了一下,如果我使用一个粗体/下划线/斜体单元格,该单元格将只有一个类"xl65"
,因此我无法区分该单元格在Excel中是如何设置样式的.
但我注意到,如果我全部使用这三个选项,"xl65"
表示斜体单元格,"xl66"
表示带下划线的单元格,"xl67"
表示粗体单元格.
所以,我的问题是,我如何区分这些类,这样我就可以应用CSS样式,使它们看起来像是想要的那样.