libxlsxwriter
|
lxw_name_to_row()
and lxw_name_to_col()
utility functions.Added support for embedding images into worksheets with worksheet_embed_image()
.
This can be useful if you are building up a spreadsheet of products with a column of images for each product. Embedded images move with the cell so they can be used in worksheet tables or data ranges that will be sorted or filtered.
This functionality is the equivalent of Excel's menu option to insert an image using the option to "Place in Cell" which is available in Excel 365 versions from 2023 onwards.
v1.1.8
instead of RELEASE_1.1.8
for better interoperability with Xcode..so
version to 6. This was missed in the previous release.Updated vendored version of minizip to v 1.3.0 to include upstream fixes.
Feature request #419.
Added quote_prefix
format property.
Feature request #385.
Fix cmake minizip version check.
Feature request #405.
Fix for buffer overflow with utf-8 strings in data validation.
Feature request #394.
Fix for range in text type conditional format.
Feature request #395.
Fix 32bit multiply with overflow issue for images.
Fix multiply with overflow issue when image locations in the worksheet were greater than the u32 max value.
output_buffer
parameter of workbook_new_opt(). See also output_buffer.c.fmemopen()
and open_memstream()
are supported. This requires the USE_MEM_FILE
compilation option.Added support for autofilter rules. See Working with Autofilters and autofilter.c.
Feature request #254.
Added optional third party library to handle sprintf handling of doubles. This is to avoid issues with number formatting in some locales. The optional library is the Milo Yip DTOA implementation. See Using a double formatting library.
Issue #272.
Added the LXW_EXPLICIT_FALSE variable to allow the default bold property in chart title fonts to be turned off.
Issue #199.
Fix for Cocoapod issue where local md5 files conflicted with BoringSSL headers.
Issue #342.
worksheet_write_dynamic_array_formula()
worksheet_write_dynamic_formula()
and Dynamic Array support.worksheet_write_unixtime()
function.worksheet_set_background()
.worksheet_set_row_pixels()
and worksheet_set_column_pixels()
functions.worksheet_insert_image_opt()
and lxw_image_options. workbook_read_only_recommended()
function to set the Excel "Read-only Recommended" option that is available when saving a file. chart_axis_set_crossing_min()
as well as the existing 'max' option. The 'min' option isn't available in the Excel interface but can be enabled via VBA. Added some additional information on using constant_memory mode with memory mounted /tmp directories. See Constant memory mode and the /tmp directory.
Issue #306.
Fixed issue where the limit for header/footer strings was 255 bytes instead of 255 characters and as a result UTF8 strings were being truncated.
Issue #305.
Added support for worksheet conditional formatting. See worksheet_conditional_format_range()
and Working with Conditional Formatting.
Added performance optimization for search for control characters in strings in worksheet_write_string()
.
Issue #298.
lxw_datetime_to_excel_datetime()
a function public. worksheet_set_header_opt()
.worksheet_ignore_errors()
function to ignore Excel worksheet errors/warnings in user defined ranges..delete
to .hide
in order to avoid reserved word conflict with C++. Issue #300.worksheet_insert_image_buffer_opt()
images. Issue #292.Fix to avoid duplicate images being copied to an libxlsxwriter file. Excel uses an optimization where it only stores one copy of a repeated/duplicate image in a workbook. Libxlsxwriter didn't do this which meant that the file size would increase when then was a large number of repeated images. This release fixes that issue and replicates Excel's behavior.
Note, that this change adds a dependency on the Openwall MD5 library, which is now included with the libxlsxwriter third party source files. It is possible to compile libxlsxwriter without this library, and thus getting the older behavior, by passing USE_NO_MD5=1
to make.
worksheet_write_url()
.worksheet_insert_image_opt()
.worksheet_write_url()
edge cases.worksheet_insert_image()
. By default it uses the filename as the description. Issue #238.fopen
to handle utf8 filenames when working with images. Issue #238.file(1)
. The mime-type reported by "file --mime-type"/magic was incorrect for XlsxWriter files since it expected the [Content_types]
to be the first file in the zip container.worksheet_write_rich_string()
function to allow writing of multi-format rich strings. See rich_strings.c Feature request #37.chartsheet_set_tab_color()
, and chartsheet_set_zoom()
.chartsheet_protect()
, chartsheet_hide()
, chartsheet_select()
and chartsheet_set_first_sheet()
.chart_axis_set_label_align()
function to set the alignment of chart category axis labels. Feature request #186.lxw_version()
function to get the library version. Feature request #194.worksheet_insert_image_buffer()
function to insert images from memory buffers. See image_buffer.c. Feature request #125.chart_set_up_down_bars()
and chart_set_up_down_bars_format()
and chart_data_tools.c.chart_show_blanks_as()
and chart_show_hidden_data()
.chart_set_series_overlap()
and chart_set_series_gap()
.chart_set_table()
and chart_set_table_grid()
.chart_set_drop_lines()
and chart_set_high_low_lines()
functions to add chart Drop and High-Low lines to indicate category values. See chart_data_tools.c.chart_series_set_smooth()
function to set the line smoothing property of a line or scatter chart series.chart_axis_set_num_format()
.chart_series_set_invert_if_negative()
.chart_axis_set_crossing()
and chart_axis_set_crossing_max()
.chart_axis_set_major_tick_mark()
and chart_axis_set_minor_tick_mark()
functions to chart axis tick marks.chart_axis_set_display_units()
function to set chart axis display units.chart_axis_set_interval_unit()
and chart_axis_set_interval_tick()
functions to adjust category axis intervals.chart_axis_set_major_unit()
and chart_axis_set_minor_unit()
to set the major and minor units of a category axis.chart_axis_set_label_position()
option to position the axis labels (numbers).chart_axis_set_position()
option to position a category axis horizontally on, or between, the axis tick marks.chart_axis_off()
.chart_chartarea_set_line()
and chart_plotarea_set_line()
.chart_axis_set_reverse()
function to reverse the order of a chart axis.chart_axis_set_min()
and chart_axis_set_max()
functions to set the minimum and maximum value for a chart axis.chart_axis_set_log_base()
function to set the log base of a chart axis. Feature request #70.chart_legend_set_position()
, chart_legend_set_font()
and chart_legend_delete_series()
.chart_axis_set_name_font()
, chart_axis_set_num_font()
, chart_title_set_name_font()
and Chart formatting: Fonts.workbook_get_worksheet_by_name()
function to get a worksheet object from its name.workbook_validate_worksheet_name()
function to validate a worksheet name.Switched to using tmpfileplus for temporary file handles to work around issue when the temp directory on Windows isn't writeable. The temp file directory is now also configurable at runtime, see Specifying a TEMP directory for libxlsxwriter.
Issue #63.
workbook_set_custom_property_string()
and doc_custom_properties.c.Added updated Cocoapods file for Cocoapods 1.0.0. This also add support for the "use_frameworks" directive. Thanks to Ludovico Rossi. See Getting Started with libxlsxwriter for instructions on how to use the cocoapod.
Pull request #50.
worksheet_insert_image()
issue when handling images with zero dpi.Refactored the error handling and reporting for when the file creation subsystem fails due to file permissions or other issues. The new error codes are in #lxw_error
and the codes can be converted to strings, for reporting, using the new lxw_strerror()
function.
Issue #49.
Added support for charts via the The Chart object. See the examples of the supported chart types:
Feature request #36.
worksheet_write_boolean()
function to write Excel boolean values. Feature request #47.Renamed worksheet_set_row()
function to worksheet_set_row_opt()
for consistency with current and future APIs. The worksheet_set_row()
function is now used without the options parameter.
Note: This is a backward incompatible change.
Renamed worksheet_set_column()
function to worksheet_set_column_opt()
for consistency with current and future APIs. The worksheet_set_column()
function is now used without the options parameter.
Note: This is a backward incompatible change.
worksheet_insert_image()
function to add PNG and JPG images to worksheets. See demo.c and images.c.worksheet_set_default_row()
function to allow setting of default row height and hiding unused rows. See the hide_row_col.c example.worksheet_protect()
function to protect Excel worksheet elements from modification. See the worksheet_protection.c example.workbook_set_properties()
function to set Excel document properties such as Author and Title. See the doc_properties.c example.worksheet_hide()
function to hide a worksheet. See the hide_sheet.c example.worksheet_set_first_sheet()
function to set the first visible worksheet in a workbook with a large number of worksheets.worksheet_set_tab_color()
function to set the worksheet tab color. See the tab_colors.c example.worksheet_right_to_left()
function. This can be used to change the default direction of the worksheet from left-to-right when creating Arabic, Hebrew or other near or far eastern worksheets that use right-to-left as the default direction.worksheet_hide_zero()
function to hide zero cell values.worksheet_set_zoom()
method to set the worksheet zoom factor.worksheet_set_selection()
function to set the cell selected range on a worksheet.worksheet_freeze_panes()
and worksheet_split_panes()
to allow setting worksheet panes. See panes.c example.worksheet_write_url()
function to write urls/hyperlinks to worksheets. See also hyperlinks.c.worksheet_autofilter()
function to add autofilters to worksheets. See also autofilter.c.worksheet_write_array_formula()
function to allow writing of array formulas in worksheets.worksheet_set_h_pagebreaks()
and worksheet_set_v_pagebreaks()
functions to define worksheet page breaks.worksheet_set_print_scale()
function to set the scale factor for the printed page.worksheet_set_start_page()
function to set the start page number when printing.worksheet_print_area()
function to control the print area of a worksheet.worksheet_fit_to_pages()
function to fit the printed area to a specific number of pages both vertically and horizontally.worksheet_repeat_rows()
and worksheet_repeat_columns()
functions to control the repeated rows/columns on printed worksheets.worksheet_gridlines()
function to show/hide screen and print gridlines.worksheet_center_horizontally()
and worksheet_center_vertically()
functions to center worksheet on the printed page.worksheet_print_row_col_headers()
function to enable printing of row and column headers.worksheet_set_header()
and worksheet_set_footer()
functions. See also headers_footers.c.worksheet_merge_range()
method to merge worksheet cells. See also merge_range.c.workbook_define_name()
method to create defined names and ranges in a workbook or worksheet.worksheet_select()
function to set worksheets as selected.worksheet_activate()
to set the active worksheet.worksheet_set_margins()
function to set top, bottom, left and right margins in a worksheet.constant_memory
mode weren't closed until application exited. Issue #1.