/** * Office 文件预览处理器 * 使用动态导入减小初始包体积 */ // Excel 预览处理器 export async function previewExcel(file, container) { try { // 动态导入 xlsx 库 const XLSX = await import('xlsx') // 读取文件 const arrayBuffer = await file.arrayBuffer() const workbook = XLSX.read(arrayBuffer, { type: 'array' }) // 获取第一个工作表 const firstSheetName = workbook.SheetNames[0] const worksheet = workbook.Sheets[firstSheetName] // 转换为 HTML 表格 const html = XLSX.utils.sheet_to_html(worksheet, { editable: false, header: '', footer: '' }) // 渲染到容器 container.innerHTML = `
📊 ${firstSheetName} ${workbook.SheetNames.length} 个工作表
${html}
` return { success: true } } catch (error) { console.error('Excel 预览失败:', error) return { success: false, error: error.message } } } // Word 预览处理器 export async function previewWord(file, container) { try { // 动态导入 mammoth 库 const mammoth = await import('mammoth') // 读取文件并转换为 HTML const arrayBuffer = await file.arrayBuffer() const result = await mammoth.convertToHtml({ arrayBuffer }) // 渲染到容器 container.innerHTML = `
${result.value}
${result.messages.length > 0 ? `
转换警告 (${result.messages.length})
    ${result.messages.map(msg => `
  • ${msg.message}
  • `).join('')}
` : ''}
` return { success: true } } catch (error) { console.error('Word 预览失败:', error) return { success: false, error: error.message } } } // 判断是否为 Office 文件 export function isOfficeFile(fileName) { const ext = fileName?.toLowerCase()?.split('.').pop() return ['xlsx', 'xls', 'docx', 'doc'].includes(ext) } // 判断是否为 Excel 文件 export function isExcelFile(fileName) { const ext = fileName?.toLowerCase()?.split('.').pop() return ['xlsx', 'xls'].includes(ext) } // 判断是否为 Word 文件 export function isWordFile(fileName) { const ext = fileName?.toLowerCase()?.split('.').pop() return ['docx', 'doc'].includes(ext) }