I tested this in SSIS from a 2008 R2 install and Excel 2010.
Using the Excel 97-2003 output format in the connection manager, I was able to reproduce the case where there was the header name in the first row, then a blank, then the data. But changing the "First row has column names" had a different effect for me: I still got the header row, but no blank.
Using the Excel 2007 format, I wasn't able to suppress the header row either, though in both cases, it didn't output a blank row.
You didn't say if you want the header row or not, or which output format you're using; based on my testing, you're using 97-2003, so all you might have to do is switch to the 2007 format.
Attaching a Data Viewer just before the Excel Destination shows only data rows, so the extra blank is being added by the Destination component. So if the Destination isn't configurable to get rid of the blank, you're out of luck.
Suffice to say, though, since the behaviour of this component seems very buggy and the whole setup process to even get this to work at all was such a pain, I would strongly consider switching to a more stable component like the Flat File Destination to output CSV, which you can open directly in Excel, too.
Discontinued Integration Services Functionality in SQL Server 2012
The options to configure a data viewer to display data in a histogram, scatter plot, or column chart have been discontinued in this release.
Data Viewer :
Previous versions of SSIS included four types of data viewer—the Grid, Histogram, Scatterplot, and Column Chart data viewers. Because the Grid data viewer is the most commonly used, the SSIS team removed the other types of data viewers from SSIS 2012.
Best Answer
You may be interested in a standard approach to solve this problem. It is something called short circuit. To illustrate it, here's the code:
This way you can explicitly set variable to NULL, do not set variable to anything, or specify a value.
The reason it is called short circuit is that based on the implementation of ANSI SQL this line of code:
has a possibility to evaluate only the first part of the expression (the IS NULL part) thus excluding the need to evaluate the second part, which makes the code slightly faster.