chuyển đổi CSV / XLS sang JSON? [đóng cửa]


142

Có ai biết có ứng dụng nào cho phép tôi chuyển đổi XLS sang JSON không?

Tôi cũng sẽ giải quyết một công cụ chuyển đổi từ CSV vì đó là điều mà có lẽ tôi sẽ phải tự viết nếu không có gì xung quanh.


XLS có cấu trúc như thế nào? Bạn có cho rằng hàng đầu tiên là các tiêu đề cột không?
SheetJS


CsvCruncher lấy CSV làm bảng SQL và cho phép bạn thực hiện CHỌN, xuất kết quả dưới dạng CSV hoặc JSON. github.com/OndraZizka/csv-cruncher
Ondra ižka

Điều này có thể dễ dàng thực hiện bằng cách sử dụng dataframe gấu trúc. Nhập csv của bạn vào dataframe gấu trúc và chuyển nó thành json.
R4444

1
Tôi khuyên bạn nên xem Data Transformer (từ chối trách nhiệm - Tôi là nhà phát triển của nó). Nó chuyển đổi giữa CSV, JSON, XML và YML cục bộ. Nó cung cấp một số cài đặt chuyển đổi (với mặc định tốt) để bạn có thể điều chỉnh kết quả cho mục đích của mình. Bạn có thể lấy nó từ Mac App Store hoặc Microsoft Store .
Hệ thống Geo

Câu trả lời:


77

Điều này làm việc hoàn hảo cho tôi và KHÔNG yêu cầu tải lên tệp:

https://github.com/cparker15/csv-to-json?files=1


Nếu bạn muốn chuyển đổi thành văn bản, bạn có thể dán mã của mình, sử dụng tùy chọn "Hành động".
Steve O'Connor

Thật không may, trang web này đã bị sập
Mazen Kasser

3
Có vẻ như nguồn trên GIT: github.com/cparker15/csv-to-json?files=1
zmonteca

@zmonteca Cập nhật câu trả lời với liên kết của bạn
robertc

Cảm ơn bạn, nó hoạt động. bạn chỉ cần cập nhật các phụ thuộc của dự án này, nếu không nó không chạy được
hd84335

195

Bạn có thể thử công cụ này tôi đã thực hiện:

Ông chuyển đổi dữ liệu

Nó chuyển đổi thành JSON, XML và các thứ khác.

Đó cũng là tất cả các phía máy khách, vì vậy dữ liệu của bạn không bao giờ rời khỏi máy tính của bạn.


có vẻ thú vị, tôi sẽ quay trở lại vấn đề này khi tôi cần một lần nữa
mkoryak

6
Nó tốt nhưng lưu ý rằng nó không thoát dấu ngoặc kép chính xác. Khi CSV của bạn chứa dấu ngoặc kép, đầu ra không thoát khỏi nó. Bạn có thể phải làm điều đó bằng tay. Công cụ rất tiện dụng hàng tháng.
barrycarton

Công cụ tuyệt vời! độc đáo thực hiện. @barrycarton có vẻ như điều này đã được sửa nếu bạn lấy mã mới nhất từ ​​Github. Một trong các liên kết ở trên dường như đã lỗi thời.
Bạch

Xin chào @Shan Carter Tôi muốn người dùng chỉ tải tệp excel, Không sao chép nội dung của excel, Có thể với mã hiện tại hoặc tôi nên rẽ nhánh (Nếu có thể làm được). Hãy chia sẻ suy nghĩ của bạn.
Rahul Gautam

1
Công cụ tuyệt vời, @Shan Carter. Tôi đã lấy tự do để sửa một vài thứ trong ngã ba của mình ở đây: thdoan.github.io/mr-data-converter
thdoan

38

Vì Powershell 3.0 (được cung cấp cùng với Windows 8, có sẵn cho Windows 7 và Windows Server 2008 nhưng không phải Windows Vista), bạn có thể sử dụng bộ lệnh convertto-json tích hợp:

PS E:> $topicsjson = import-csv .\itinerary-all.csv | ConvertTo-Json 

PS E:\> $topicsjson.Length
11909

PS E:\> $topicsjson.getType()

IsPublic IsSerial Name                                     BaseType                  
-------- -------- ----                                     --------                  
True     True     Object[]                                 System.Array              

Trang trợ giúp trực tuyến trên Technet


7
Tín dụng bổ sung: lưu json vào một tệp ... $ topicjson | Bổ sung nội dung -Path "mydata.json"
brady321

28

Nếu bạn không thể tìm thấy một giải pháp hiện có, thật dễ dàng để xây dựng một giải pháp cơ bản trong Java. Tôi chỉ viết một cái cho một khách hàng và chỉ mất vài giờ bao gồm các công cụ nghiên cứu.

Apache POI sẽ đọc tệp nhị phân Excel. http://poi.apache.org/

JSONObject sẽ xây dựng JSON

Sau đó, đó chỉ là vấn đề lặp qua các hàng trong dữ liệu Excel và xây dựng cấu trúc JSON. Đây là một số mã giả cho việc sử dụng cơ bản.

FileInputStream inp = new FileInputStream( file );
Workbook workbook = WorkbookFactory.create( inp );

// Get the first Sheet.
Sheet sheet = workbook.getSheetAt( 0 );

    // Start constructing JSON.
    JSONObject json = new JSONObject();

    // Iterate through the rows.
    JSONArray rows = new JSONArray();
    for ( Iterator<Row> rowsIT = sheet.rowIterator(); rowsIT.hasNext(); )
    {
        Row row = rowsIT.next();
        JSONObject jRow = new JSONObject();

        // Iterate through the cells.
        JSONArray cells = new JSONArray();
        for ( Iterator<Cell> cellsIT = row.cellIterator(); cellsIT.hasNext(); )
        {
            Cell cell = cellsIT.next();
            cells.put( cell.getStringCellValue() );
        }
        jRow.put( "cell", cells );
        rows.put( jRow );
    }

    // Create the JSON.
    json.put( "rows", rows );

// Get the JSON text.
return json.toString();

Nếu đang có excel được lưu trữ tại E: /exceloutput.xlsx. Giá trị trong tệp và inp trong hai dòng đầu tiên là gì?
Kate




5

Không có giải pháp hiện có nào hoạt động, vì vậy tôi nhanh chóng hack cùng một tập lệnh sẽ thực hiện công việc. Đồng thời chuyển đổi các chuỗi rỗng thành null và tách hàng tiêu đề cho JSON. Có thể cần phải điều chỉnh tùy thuộc vào phương ngữ CSV và bộ ký tự bạn có.

#!/usr/bin/python
import csv, json
csvreader = csv.reader(open('data.csv', 'rb'), delimiter='\t', quotechar='"')
data = []
for row in csvreader:
    r = []
    for field in row:
        if field == '': field = None
        else: field = unicode(field, 'ISO-8859-1')
        r.append(field)
    data.append(r)
jsonStruct = {
    'header': data[0],
    'data': data[1:]
}
open('data.json', 'wb').write(json.dumps(jsonStruct))

Điều này có liên quan đến johntron.com/creations/csv-to-json
David

Không, ngoại trừ việc các thư viện tương tự (csv, json) đang được sử dụng. Tôi đã viết mã của tôi từ đầu. Các vòng lặp được yêu cầu để xử lý mà tôi muốn thực hiện (chuyển đổi bộ ký tự và thay thế các chuỗi rỗng bằng null).
Tronic

Tôi đang tự hỏi về xung đột giữa nhiều ý kiến ​​cho rằng "điều này hiệu quả với tôi" và điều này cho rằng "không có giải pháp nào hiện có hiệu quả."
B. Clay Shannon

4

Thay vì các trình chuyển đổi được mã hóa cứng, hãy hỗ trợ CSV cho Jackson (bộ xử lý JSON): https://github.com/FasterXML/jackson-dataformat-csv . Vì vậy, Jackson cốt lõi có thể đọc JSON dưới dạng POJO, Bản đồ JsonNode, gần như mọi thứ. Và hỗ trợ CSV có thể làm tương tự với CSV. Kết hợp cả hai và nó là bộ chuyển đổi rất mạnh mẽ nhưng đơn giản giữa nhiều định dạng (đã có phụ trợ cho XML, YAML và nhiều thứ khác được thêm vào).

Một bài viết cho thấy làm thế nào để làm điều này có thể được tìm thấy ở đây .


3

Xem nếu điều này giúp: Quay lại CSV - Chuyển đổi văn bản CSV thành Đối tượng; thông qua JSON

Đây là một bài đăng blog được xuất bản vào tháng 11 năm 2008 bao gồm mã C # để cung cấp giải pháp.

Từ phần giới thiệu trên bài đăng trên blog:

Vì Json dễ đọc và viết hơn Xml. Theo sau, CSV (giá trị được phân tách bằng dấu phẩy) dễ đọc và viết hơn Json. CSV cũng có các công cụ như Excel và các công cụ khác giúp bạn dễ dàng làm việc và tạo. Vì vậy, nếu bạn muốn tạo cấu hình hoặc tệp dữ liệu cho ứng dụng tiếp theo của mình, đây là một số mã để chuyển đổi CSV sang JSON thành các đối tượng POCO


1
cảm ơn. Tôi phải chuyển cái này sang java, nhưng tốt hơn là cố gắng phát minh lại cái bánh xe
mkoryak

rất vui vì nó hoạt động, c # -> java dù sao cũng là một kết hợp khá tốt.
qxotk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.