You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Expo React Native环境下创建CSV文件

Expo环境下创建CSV文件实现方案

是的,在Expo环境下创建CSV文件确实推荐使用官方维护的expo-file-system库,核心调用方法就是你提到的FileSystem.writeAsStringAsync(fileUri, contents, options)。由于react-native-fs依赖原生模块配置,无法在Expo托管项目中运行,因此不推荐使用。

1. 前置依赖安装

执行Expo官方安装命令,避免版本不兼容问题:

npx expo install expo-file-system

2. 完整实现代码

2.1 引入依赖

import * as FileSystem from 'expo-file-system';

2.2 生成合规CSV内容

CSV内容需要遵循格式规范,避免逗号、引号、换行符导致内容错位:

const getCSVContent = (rawData) => {
  // 自定义CSV表头
  const header = ['姓名', '年龄', '邮箱'];
  // 处理每一行数据,转义特殊字符
  const rows = rawData.map(item => {
    return [
      item.name,
      item.age,
      item.email
    ].map(field => `"${String(field).replace(/"/g, '""')}"`).join(',');
  });
  // 拼接表头和行内容,用换行分隔
  return [header.join(','), ...rows].join('\n');
}

2.3 写入CSV到本地存储

const createCSVFile = async (data) => {
  const csvContent = getCSVContent(data);
  // 定义文件存储路径,documentDirectory为Expo应用专属可读写目录
  const fileUri = `${FileSystem.documentDirectory}user_export.csv`;

  try {
    // 调用写入方法,指定UTF8编码避免中文乱码
    await FileSystem.writeAsStringAsync(fileUri, csvContent, {
      encoding: FileSystem.EncodingType.UTF8
    });
    console.log('CSV文件生成成功,存储路径:', fileUri);
    return fileUri;
  } catch (err) {
    console.error('CSV生成失败:', err);
  }
}

3. 注意事项

  • 存储路径优先选择FileSystem.documentDirectory,该目录仅当前应用可访问,不会被系统随意清理
  • 写入时必须指定UTF8编码,否则中文、特殊符号会出现乱码
  • 如果需要将生成的CSV分享给其他应用,或者保存到系统公共存储,可以搭配Expo官方的expo-sharing、expo-media-library库使用,无需接入原生依赖

内容的提问来源于stack exchange,提问作者Unknown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:30:03