> For the complete documentation index, see [llms.txt](https://docs.rowsncolumns.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rowsncolumns.app/excel-and-google-sheets/csv.md).

# CSV

Use the `@rowsncolumns/toolkit` package to read, write and download CSV files from `SheetData` object

{% hint style="info" %}
`@rowsncolumns/toolkit` is dependent on `@rowsncolumns/spreadsheet-state` package, and expects sheet data in `type SheetData` format
{% endhint %}

## Import from CSV

```typescript
import { createRowDataFromCSVFile } from "@rowsncolumns/toolkit";

const App = () => {
  const handleChange = async (e) => {
    const file = e.target.files[0]
    const rowData = await createRowDataFromCSVFile(file)
    const newSheetId = uuid()
    
    onChangSheetData(prev => {
      return {
        ...prev,
        [newSheetId]: rowData
      }
    })
  }
  return (
    <div>
      <input type="file" onChange={handleChange} />
    </div>
  )
}
```

## Export to CSV

```tsx
import { exportToCSV } from "@rowsncolumns/toolkit";

const App = () => {
  const [ sheetData, onChangeSheetData] = useState<SheetData>()
  
  return (
    <div>
      <button onClick={() => exportToCSV({ filename: 'csvfile', rowData: sheetData[1] }) }>Export to CSV</button>
      <CanvasGrid />
    </div>
  )
}
```
