janisdd / vscode-edit-csv

vs code extension to edit csv files with an excel like table ui
MIT License
226 stars 35 forks source link
csv vscode-extension

vscode-edit-csv

This extensions allows you to edit csv files with an excel like table ui

Web version

If you don't have vs code to hand, you can use the online version at https://edit-csv.net

Features

Execute the command edit as csv to open an editor for the current file.

Execute the command again to switch back to the source file or to switch back to the editor

feature X

Note that the data flow is one way (editor to source file). If you make changes to the source file (.csv) while the editor is open, the editor will not be updated!

¡ Important Notes !

Retain Quote Information Rules

during parsing information about the quotes are stored

Implications of this

This can be turned off by setting csv-edit.retainQuoteInformation to false In this case all unnecessary quotes are removed

How this extension works

essentially it's just import csv and export csv

When you click on Edit CSV file

When you click on apply

As you can see this does not scale very well with large csv files (needs to be stringified and stored the whole time)

Extension Settings

There are some settings for this plugin. Open the VS Code Settings and search for csv-edit

Supported file types/extension

Files with the extension .csv, .tsv should work out of the box.

You can change the file type in the bottom right corner of the editor (select language mode). This is required for unnamed/new files.

For tsv, make sure the indention is set to tabs.

File extension xyz is not recognized by the vs code extension

See https://code.visualstudio.com/docs/languages/overview#_adding-a-file-extension-to-a-language

If the link is down: Search for files.associations in the vs code settings. Then add an entry for *.xyz to csv.
Now the file is treated as a csv file and is recognized by the extension

Drag to Auto Fill

Starting from version 0.10.0 the setting dragToAutoFill defaults to excelLike.

The other values are none and copyOnly.

none is used to disable auto fill.

Setting dragToAutoFill to copyOnly will copy the selected cell values over and over again. Example: 1,b,3 and you drag the handle 6 cells further will give 1,b,3,1,b,3 as auto fill values. As you can see, there is no interpolation, the selected sequence is copied again and again.

The default setting excelLike imitates the Excel behaviour for automatic fill values.

In most cases it will work just fine, but there may be some special cases.

In general, the following values can be filled in automatically: Numbers, month names and dates.

Similar to Excel, you can hold down the alt key before releasing the mouse button to copy the cell values. No interpolation is carried out.

You can find a complete explanation of how automatic filling works in docs/autoFillBehavior.md.

Known Issues

Alternatives

I recommend installing the Rainbow CSV extension, the extensions play well together!

If you want to only view csv files you can go for the extension Excel Viewer. It has some more advanced sorting and filtering features.

How long will it stay in preview?

There is one things missing...

Why not...?

Used projects

see thirdParty folders

There are some more in package.json. Even if they are not referenced directly, they are used e.g. for the browser build. We copy them from node_modules into the thirdParty folders.

Open the editor from other (your) extension with custom settings

There is a command edit-csv.editWithConfig. It can be used to open the editor with settings specified by you.

All possible settings can be found in [project root]/csvEditorHtml/types.d.ts > EditCsvConfig. The easiest way is to copy both types EditCsvConfig and EditCsvConfigOverwrite and then call the extenion command like this:

 vscode.commands.registerCommand('yourExtension.yourCommand', () => {
    let overwriteSettings: EditCsvConfigOverwrite = {
        readOption_hasHeader: "true",
        //other options, auto completion enabled
    }

    vscode.commands.executeCommand(`edit-csv.editWithConfig`, overwriteSettings)
})

There is one problem left: the Edit CSV button in the title bar (and the file right click menu action) will still use the settings set by the user... For this there is the option csv-edit.hideOpenCsvEditorUiActions. If set to true it will hide the two ui actions. This way you can create a buttom from your extension and open the editor and force your settings.

Make sure to keep the type EditCsvConfig up-to-date (in case any types change)

The extension will warn you about any unknown settings supplied but will not check the actual property values!

It will overwrite the settings configured by the user and call the same method as edit-csv.edit (the default when the editor is opened via the Edit CSV button).

How to build locally

To compile (and watch) the files in csvEditorHtml run

tsc -w #or just tsc to transpile only once
# new terminal
cd csvEditorHtml
tsc -w #or just tsc to transpile only once

then press F5 to run the extension

When you edit csvEditorHtml/index.html you need to manually copy the changes (everything in the body but without the scripts) into src/getHtml.ts (past into body)

You can also open csvEditorHtml/index.html in your favorite browser and play around (the vs code settings are not applied in the browser)

License

Code: MIT