<p>I'm exporting data programatically from Excel to SQL Server 2005 using SqlBulkCopy. It works great, the only problem I have is that it doesn't preserve the row sequence i have in Excel file. I don't have a column to order by, I just want the records to be inserted in the same order they appear in the Excel Spreadsheet.</p>

<p>I can't modify the Excel file, and have to work with what I've got. Sorting by any of the existing columns will break the sequence.</p>

<p>Please help.</p>

<p>P.S. Ended up inserting ID column to the spreadsheet, looks like there's no way to keep the order during export/import</p>

If you can save the excel spreadsheet as a CSV it is very easy to generate a list of INSERT statements with any scripting language which will be executed in the exact same order as the spreadsheet.  Here's a quick example in Groovy but any scripting language will do it just as easily if not easier:
```
```
def file1 = new File('c:\\temp\\yourSpreadsheet.csv')
def file2 = new File('c:\\temp\\yourInsertScript.sql')

def reader = new FileReader(file1)
def writer = new FileWriter(file2)

reader.transformLine(writer) { line ->
    fields =  line.split(',')

    text = """INSERT INTO table1 (col1, col2, col3) VALUES ('${fields[0]}', '${fields[1]}', '${fields[2]}');"""

}
```
```
You can then execute your "yourInsertScript.sql" against your database and your order will be the same as your spreadsheet.