Assuming that you want the device names from the `device_name` key's value under `logical` rather than from the keys directly under `logical` (this makes it easier and also gives you a value that is a valid device name on Windows systems), and that you also want what I believe is the _unit of measurement_ attached to the actual numbers (would make sense if there is a chance that you might have variable units in the data):

```sh
jq -r '
    ["Device name", "Free space", "Total size"],
    (
        .logical[] |
        [
            .device_name[0],
            (.free       | map(tostring) | add),
            (.total_size | map(tostring) | add)
        ]
    ) | @csv' file.json
```

Given the data in the question in `file.json`, this would generate the following CSV document (which would be trivial to import into Excel):

```csv
"Device name","Free space","Total size"
"D:\","10178084864B","21471686656B"
"C:\","18707755008B","55832473600B"
```

Change each of the two calls to `add` into `join(" ")` if you want to have a space between the number and the unit.