React JS导出CSV时单行数据拆分多行问题求助
解决CSV行内容被拆分的问题
问题出在你的乌尔都语文本中可能包含隐藏的换行符(\n或\r),这些字符会让CSV阅读器将同一单元格的内容拆分成多行。只需在处理字符串值时,把这些换行符替换掉即可。
修改后的convertToCsv函数:
const convertToCsv = (data) => { const rows = []; // 提取所有表头 const headers = Array.from( new Set(data.flatMap((item) => Object.keys(item))) ); // 添加表头行 rows.push(headers.join(",")); // 转换数据为CSV行 data.forEach((item) => { const row = headers.map((header) => { const value = item[header]; if (typeof value === "string") { // 替换字符串中的换行符,同时处理引号转义 const cleanedValue = value.replace(/(\r\n|\n|\r)/g, " ").replace(/"/g, '""'); return `"${cleanedValue}"`; } return value; }); rows.push(row.join(",")); }); // 拼接CSV内容,保留BOM确保乌尔都语显示正常 const csv = "\uFEFF" + rows.join("\r\n"); return csv; };
关键修改点:
- 处理字符串值时,新增
replace(/(\r\n|\n|\r)/g, " "),将所有类型的换行符替换为空格(可根据需求换成空字符串) - 保留原有引号转义逻辑,保证CSV格式的合法性
这样处理后,单元格里的内容就不会因为隐藏换行符被拆分,所有值都会显示在同一行里,同时乌尔都语字符的显示也不受影响。
内容的提问来源于stack exchange,提问作者Mehboob Ali
相关产品推荐
相关产品推荐

