Sample code for 30+ languages & platforms
Zig Requires Chilkat v11.3.0+

XLSX Convert Sheet to CSV

Open an Excel spreadsheet (.xlsx) and loads a sheet into a CSV object.

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    // .xlsx files are Zip archives
    const zip = try chilkat.Zip.init();
    defer zip.deinit();
    zip.openZip("qa_data/excel/fakeCompanies.xlsx") catch {
        std.debug.print("{s}\n", .{try zip.getLastErrorText(alloc)});
        return;
    };

    const csv = try chilkat.Csv.init();
    defer csv.deinit();
    const sheet_names = try chilkat.StringTable.init();
    defer sheet_names.deinit();
    csv.xlsxGetSheets(zip, sheet_names) catch {
        std.debug.print("{s}\n", .{try csv.getLastErrorText(alloc)});
        return;
    };

    if (sheet_names.getCount() == 0) {
        std.debug.print("There are no sheets in the .xlsx\n", .{});
        return;
    }

    // Get the name of the 1st sheet.
    const sheet_name = try sheet_names.stringAt(alloc, 0);

    // Load the 1st sheet into the CSV.
    // We could've also loaded the 1st sheet by passing an empty string for the sheet name.
    csv.xlsxLoadSheet(zip, sheet_name) catch {
        std.debug.print("{s}\n", .{try zip.getLastErrorText(alloc)});
        return;
    };

    // The Chilkat CSV API can now be used to read, modify, or insert cells.
    // ...
    // ...

    const csv_str = try csv.saveToString(alloc);
    std.debug.print("{s}\n", .{csv_str});

    // Sample output:
    // CompanyName,Address,City,State,Zip,Phone
    // Acme Innovations LLC,7428 Westbrook Blvd,Oak Bend,IL,60514,630-555-2398
    // BlueHorizon Data Systems,1850 Crestline Park Suite 210,Rivergate,CA,92814,714-555-8821
    // Pinnacle Manufacturing Corp,3912 Industrial Loop,Maple Ridge,TX,77301,281-555-4477
    // Evergreen Analytics Inc,1250 Highland Terrace,Stonefield,WA,98290,425-555-9914
    // NovaTech Solutions Group,578 Marketview Drive,Clearwater,FL,33760,727-555-6032

    // Save to a .csv file.
    csv.saveFile2("c:/temp/qa_output/fakeCompanies.csv", "utf-8") catch {
        std.debug.print("{s}\n", .{try csv.getLastErrorText(alloc)});
        return;
    };
}