reactjs - 强制 csv 使用十进制格式
问题描述
我正在使用CSVLink从我的反应应用程序下载数据。其中一列包含一个 16 位数字,因此当我下载文件时,输出格式将更改为类似8.1543E+15的内容。
const text = [
{ a1: "1111111111111111", a2: "0658" },
{ a1: "2222222222222222", a2: "0658" },
{ a1: "3333333333333333", a2: "0658" },
{ a1: "4444444444444444", a2: "10658" }]
<CSVLink
filename={props.name + ".csv"}
target="_blank"
data={text}
headers={[{ label: "a1", key: "a1" }, { label: "a2", key: "a2" }]}>
{props.name}
</CSVLink>
如果我用记事本打开文件,那么我可以看到完整的数字,但通过 Excel 我会看到8.1543E+15 & 658
如何强制执行小数格式,以便用户下载文件时,他将看到完整的数字而无需手动更改小数位。
谢谢你 。
解决方案
csv 格式没有规定包含列的格式信息 - 因此您不能强制执行十进制格式。
您唯一可以做的就是强制电子表格程序将数字视为“字符串”。
如果您在电子表格应用程序中将数字“8154300000000000”视为字符串,则需要将其写为“8154300000000000”
" 字符是 csv 中的分隔符 - 这意味着您需要转义 " 字符。csv中的转义字符是“。这意味着您需要输出双引号(“”)来转义单引号(“)。现在您的输出字符串将是 =""8154300000000000""
最后,您的 React 程序还需要转义 " 字符。javascript 的转义字符是 \ - 但为简单起见,您可以将字符串括在单引号 (') 中
您可以在此处查看工作示例。
https://codesandbox.io/s/react-cvs-large-integer-ff32p?file=/src/App.js
const text = [
{ a1: '=""8154300000000000""', a2: "0658" },
{ a1: "2222222222222222", a2: "0658" },
{ a1: "3333333333333333", a2: "0658" },
{ a1: "4444444444444444", a2: "10658" }
];
return (
<CSVLink
filename="largeNumber.csv"
target="_blank"
data={text}
headers={[
{ label: "a1", key: "a1" },
{ label: "a2", key: "a2" }
]}
>
Download Me
</CSVLink>
);
推荐阅读
- java - 如何在集成测试中启用 H2 控制台
- html - 如何将 HTML 标记转换/格式化为 Word 文档中的文本
- r - 隐藏调用系统命令的函数的输出
- javascript - Zapier 打开 exe / Zapier 代码打开打开 exe 的 javascript
- python - ImportError:没有名为“xgboost”的模块
- java - Cxf 端点随着骆驼上下文的开始而起床。我怎样才能避免这种情况?
- microsoft-graph-api - Microsoft Graph 日历 API - TargetIdShouldNotBeMeOrWhitespace 错误
- html - 根据不同的英雄超能力为表格的行添加特定的颜色
- angular7 - 如何使用 POST 请求将 3 个参数传递给后端?
- php - 如何在php中获取sql查询