классический asp, сортирующий буквенно-цифровые значения из Excel, используя порядок

Я перечисляю загрузку запасных частей на веб-страницу, которая поставляется мне еженедельно моим поставщиком. Я просто загружаю файл .xlsx в веб-папку, и страница заполняется. Объект не должен изменять файл каким-либо образом, поэтому никакая работа не будет задействована. В классическом ASP я использую

Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};"&_ "DBQ=" & Server.MapPath(file) & ";" strSQL = "SELECT * FROM A1:D10000 order by ""Item number"" ASC" Set objRS=objConn.Execute(strSQL) 

Номер позиции – номер детали, который может быть числовым или буквенно-цифровым, проблема в том, что порядок неправильный

пример

x1
x11
x111
x2
x22
x222

когда это должно быть

x1
x2
x11
x22
x111
x222

Я понимаю, почему это происходит, но не может найти способ правильно получить порядок

Все остальное работает очень хорошо, но клиенты не ожидали найти X1000 до x200, и это вызвало несколько проблем

Большое спасибо заранее за любую помощь, предоставленную

EDIT: обновлен с моим полным тестовым кодом и вводом / выводом. Я запускаю это в Excel, но я просто подтвердил это на простой странице ASP …

 Sub TestQuery() Dim oConn As New ADODB.Connection Dim oRS As New ADODB.Recordset Dim sPath Dim sSQL As String sSQL = " select [Item Number], [Name] from " & _ " D22:E34 order by 1*right([Item Number],len([Item Number])-1) " sPath = ThisWorkbook.Path & "\" & ThisWorkbook.Name oConn.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _ "DBQ=" & sPath & ";" Set oRS = oConn.Execute(sSQL) If Not oRS.EOF And Not oRS.BOF Then ToSheet Sheet1.Range("H22"), oRS Else MsgBox "No records found" End If End Sub Sub ToSheet(rng, rs) Dim f, i i = 0 For Each f In rs.Fields rng.Offset(0, i).Value = f.Name i = i + 1 Next f rng.Offset(1, 0).CopyFromRecordset rs End Sub 

введите описание изображения здесь

Для такого рода проблем в Excel одним из решений является разделение данных на числовые и альфа-части с использованием «вспомогательных столбцов», а затем сортировка по вспомогательным столбцам.

В зависимости от того, как выглядят ваши реальные данные, вы можете использовать следующие формулы:

Альфа (первый) раздел

 =LEFT(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&"0123456789"))-1) 

Цифровой (второй) раздел

 =MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&"0123456789")),99) 
  • Вопрос форматирования Excel, цвет линии по умолчанию
  • Загрузите файл excel classic asp
  • классический asp, excel, остановить вывод 0 (ноль) от удаления
  • неправильный шрифт при печати листа Excel из экземпляра?
  • Свалка Excel занимает много времени
  • Excel в качестве основы для веб-сайта?
  • Загрузка файла Excel в классическом ASP В Windows 2003 x64 Использование драйверов Office 2010
  • Excel ADO в ASP Classic - возвращает строку 2 как заголовок
  • ошибка 0x80004005 при подключении к листу Excel
  • Создание файла excel в классическом asp
  • Чтение двоичного файла POSTED и запись в новый двоичный файл
  • Давайте будем гением компьютера.