Zig Requires Chilkat v11.3.0+
Zig
XLSX Convert Sheet to CSV
Open an Excel spreadsheet (.xlsx) and loads a sheet into a CSV object.Chilkat Zig Downloads
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;
};
}