diff --git a/src/components/modals/ExportModal.vue b/src/components/modals/ExportModal.vue index 05df394..c16bea0 100644 --- a/src/components/modals/ExportModal.vue +++ b/src/components/modals/ExportModal.vue @@ -138,27 +138,25 @@ const handlePreview = async () => { } }; -const copyToClipboard = async () => { - // 生成适合 Excel 的 TSV (Tab-Separated Values) 格式 - const header = ["日期", ...selectedTags.value.map(id => getTagName(id))]; - let tsv = header.join("\t") + "\n"; +const copyColumn = async (tagId: number | 'date') => { + let lines: string[] = []; for (const date of sortedDateList.value) { - let row = [date]; - for (const tagId of selectedTags.value) { + if (tagId === 'date') { + lines.push(date); + } else { let cellStr = previewData.value[date][tagId] || ""; - // Excel/Sheets 处理带换行符的单元格,需要用双引号包围,且内容中的双引号要转义为两个双引号 + // Excel/Sheets 处理带换行符的单元格,需要用双引号包围 if (cellStr.includes('\n') || cellStr.includes('\t') || cellStr.includes('"')) { cellStr = `"${cellStr.replace(/"/g, '""')}"`; } - row.push(cellStr); + lines.push(cellStr); } - tsv += row.join("\t") + "\n"; } try { - await navigator.clipboard.writeText(tsv); - showToast("表格已复制,可直接粘贴到 Excel"); + await navigator.clipboard.writeText(lines.join("\n")); + showToast(`列数据已复制`); } catch(err) { showToast("复制失败", "error"); } @@ -253,18 +251,23 @@ const copyToClipboard = async () => { {{ isDesc ? '倒序 (由近及远)' : '正序 (由远及近)' }} -
- - +
日期 - {{ getTagName(tagId) }} + +
+ 日期 + +
+
+
+ {{ getTagName(tagId) }} + +