Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 19.05.2014
Сообщений: 6

При импорте Excel обрезаются лидирующие нули

14.08.2014, 09:01. Показов 1707. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Нужна помощь. Пытаюсь в DataTable запихнуть некоторые поля excel файла, но при импорте обрезаются лидирующие нули в колонках. (Они нужны) Может кто такое поборол.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
private static DataTable[] parseSeti (string[] seti)
        {
            // Создаем экземпляр приложения Excel
            Excel.Application excelApl=new Excel.Application();
            // Скрываем вывод окна приложения
            excelApl.Visible = false;   
 
            DataTable[] sTable = new DataTable[seti.Count()];
            int sTableIndex = 0;
 
            foreach (string set in seti)
            {
                Excel.Workbook excelWorkBook = excelApl.Workbooks.Open(@set, 
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
                    Type.Missing, Type.Missing);
                Excel.Sheets excelWorkSheets=excelWorkBook.Worksheets;
                //Получаем ссылку на лист 1
                Excel.Worksheet excelWorkSheet=(Excel.Worksheet)excelWorkSheets.get_Item(1);                
 
                // Создаем новый экземпляр таблицы в массиве sTable
                sTable[sTableIndex] = new DataTable();
 
                // Создаем колонки у таблицы
                foreach (string colH in hName)
                {
                    sTable[sTableIndex].Columns.Add(colH);
                }
 
                // Выбираем тот диапазон ячеек который используется
                Excel.Range exRange = excelWorkSheet.UsedRange;
 
                // Цикл перебирает строки в диапазоне с данными
                // Начинаем с девятой строки. От туда начинаются данные.
                for (int r = 9; r <= exRange.Rows.Count; r++)
                {
                    // Проверяем чтоб первая ячейка не содержала название подраздела
                    if(String.Compare(Convert.ToString((exRange.Cells[r,2] as Excel.Range).Value2),"") == 0)
                    {
                        continue;
                    }
 
                    // Если не вылетели на предыдущем этапе, то это строка с данными
                    // Создаем пустую строку в sTable...
                    DataRow dRow = sTable[sTableIndex].NewRow();
 
                    // ... заполняем содержимым...
                    string tmp = Convert.ToString((exRange.Cells[r, 2] as Excel.Range).Value2);
                    dRow[0] = tmp;
                    tmp = Convert.ToString((exRange.Cells[r, 8] as Excel.Range).Value2);
                    dRow[1] = tmp;
                    tmp = Convert.ToString((exRange.Cells[r, 11] as Excel.Range).Value2);
                    dRow[2] = tmp;
                    tmp = Convert.ToString((exRange.Cells[r, 9] as Excel.Range).Value2);
                    dRow[3] = tmp;
 
                    // ... и добавляем её в конец таблицы
                    sTable[sTableIndex].Rows.Add(dRow);
                }
 
                // переходим к следующей таблице.
                sTableIndex++;
            }
 
            excelApl.Quit();
            return sTable;
        }
Делаю именно так. С помощью ConnectionString не могу выбирать, ибо файл содержит не только данные, но и еще разную инфу типа заголовков, шапок таблиц и названий подразделов прям среди табличных данных. Соответственно способ с schema.ini не поможет. Ещё и потому что в таблицах постоянно разное количество полей (те что нужны всегда на месте). Если кто знает как решить проблему с нулями - отпишитесь.
З.Ы. Возможности поставить в исходном excel файле тип у всех интересующих полей "Текст" нету.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.08.2014, 09:01
Ответы с готовыми решениями:

Импорт из Excel в БД отсекает лидирующие нули
Столкнулся с проблемой при импорте из xls файла. Файл полностью текстовый, он генерируется автоматически в другом месте и нужно выбрать из...

Лидирующие нули
Всем доброго времени суток и с прошедшим ПРАЗДНИКОМ! Вот написал код A+B (длинная арифметика), всё работает правильно ошибок не нашел, но...

Как удалить лидирующие нули?
Программа разворачивает числа, нужно сделать так, что бы лидирующие нули после переворота убирались, не знаю как :( : #include...

2
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
14.08.2014, 10:59
andrey-1983, задавать форматирование ячейки (тип данных) можно не только в шаблоне, но и непосредственно перед вставкой в неё данных
0
0 / 0 / 1
Регистрация: 19.05.2014
Сообщений: 6
15.08.2014, 01:55  [ТС]
Так вот, танцевал все с бубном, запускал трассировку и пришел к такому выводу - нули обрезаются именно в момент выполнения кода
C#
1
2
3
4
5
                Excel.Workbook excelWorkBook = excelApl.Workbooks.Open(@set, 
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
                    Type.Missing, Type.Missing);
Может я не прав? Что можно придумать? Где подкрутить? :-(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.08.2014, 01:55
Помогаю со студенческими работами здесь

Убрать лидирующие нули из даты
Доброе время суток. Столкнулся с проблемой при вводе даты Пример: 31.12.2013 23:59:59 необходимо привести его к: d=31 m=12 ...

Убрать лидирующие нули в целых числах
В поле редактирования я ввожу произвольное целое число. Допускается в том числе и числа с начальными нулями (к примеру, 000567). Как...

УТ 10.3 Лидирующие нули в часе(дата) по-умолчанию
Приветствую всех! Может кто сталкивался..... Есть 2 идентичные кофиги УТ 10.3. Работают на 1м компе (т.е. локальные настройки...

Ошибка при импорте из Excel
Недавно начал изучать Access, но база нужна была &quot;еще вчера&quot;, поэтому вопрос, может и смешной, но сам еще не смог разобраться :umnik: ...

Ошибка при импорте данных из Excel
Хочу сделать импорт данных из Excel в Базу. Выдает ошибку. Я так понимаю, что неправильно указаны типы полей. В базе указаны varchat и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru