Thanks for the project. It helped me to find some issues in the spreadsheet charts (using the axis increments of the spreadsheet chart in TAChart, xlsx ignoring axis label rotation in writing).
Besides these issues in fpspreadsheet, I think also that you should replace the TsLineSeries by a TsScatterSeries. Both look very similar, but they work fundamentally different. It is one of the biggest annoyances for technicians working with charts in spreadsheet applications that usually there are two types of axes: a type with numeric values (such as the y axis), and a type with equidistant labels, often strings (such as the x axis of bar charts). The TsLineSeries is similar to a TsBarSeries in that it gets its x data from a label axis. This poses a problem in TAChart because it will place a label at every x value point and needs to apply lots of tricks to avoid the overlappling.
The correct way to handle this is to instruct the spreadsheet chart to use a value axis for x as well. This is automatically done when your series is a TsScatterSeries. Here the x values can be placed arbitrarily (although you do not do this in your example), and the x labels are numbers. And now TAChart can handle the labels in a much better way.
So, the main change in your code is to replace TsLineSeries by TsScatterSeries.
In order to get x axis labels at 0, 30, 60, ... you have to call wChart.xAxis.AutomaticMajorInterval := false and wChart.xAxis.MajorInterval := 30. But you need to get the new fpspreadsheet revision for this to work. Use svn or downlaod the zip snapshot from
https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/fpspreadsheet/.
Find a modified version of your project in the attachment.