Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/47: Рейтинг темы: голосов - 47, средняя оценка - 4.66
 Аватар для OverDozero
911 / 318 / 128
Регистрация: 07.04.2011
Сообщений: 1,725

Чтение из Excel и вывод данных в консоль

07.11.2014, 18:49. Показов 9574. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется код:
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
#include <windows.h>
 
#import "C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE14\\MSO.DLL" auto_rename no_namespace
#import "C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.OLB" auto_rename 
#import "C:\\Program Files (x86)\\Microsoft Office\\Office14\\EXCEL.EXE" auto_rename
 
wchar_t *get_cell_str( Excel::_WorksheetPtr sheet, int row, int col )
{
    Excel::RangePtr cell;
    cell = sheet->Cells->Item[row][col];
 
    if ( *cell->Text.bstrVal )
    {
        int len = wcslen(cell->Text.bstrVal) + 1;
        wchar_t *res = (wchar_t *)malloc(sizeof(wchar_t) * len);
        wcscpy(res, cell->Text.bstrVal);
        return res;
    }
 
    return NULL;
}
 
int main( )
{
    HRESULT hRes = E_FAIL;  
    CoInitialize(NULL);
    Excel::_ApplicationPtr pApp;    
    hRes = pApp.CreateInstance("Excel.Application");    
    if ( FAILED(hRes) )     
    {
        MessageBox(NULL, L"Excel не найден!", L"Ошибка", MB_OK);  
        return 1;
    }
 
    //pApp->PutVisible(0, TRUE);
    Excel::_WorkbookPtr pBook; 
    pBook = pApp->Workbooks->Open(L"C:\\excel.xls", 0);
    Excel::_WorksheetPtr pSheet;    
    pSheet = pBook->ActiveSheet;
    Excel::RangePtr cell;
        
    for ( int i = 1; i <=20; ++i ){//col столбец row строка
        for (int j=1;j<=20;++j)
    {
        
        cell = pSheet->Cells->Item[i][j];//1 параметр -строка,2 параметр-столбец
 
    //  wprintf(L"%s",cell->Text.bstrVal);
        printf(" ");
        wprintf(L"%s ",get_cell_str(pSheet,i,j));
        }
        printf("\n");
    }
    
    pApp->Quit();
    
 
    return 0;
Такой вопрос:В книге ексель есть русские символы,слова.При выводе их в консоль(приложение консольное) отображаются знаки "?".Для вывода в консоль надо использовать CharToOem?Как правильно вывести данные считанные из экселя,чтобы русские символы отображались корректно?
Дабы не плодить тем-2 вопрос:Подскажите как можно определить количество непустых строк.Допустим мне надо считывать 9 столбцов,и неизвестное количество строк в цикле по количеству строк.
Спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.11.2014, 18:49
Ответы с готовыми решениями:

Чтение данных из Excel файла
Добрый день, помогите пожалуйста с чтением данных из ячеек *.xls (excel) файла на VC++, если можно с подробным описанием, что для этого...

Работа с данными файлов Excel .xlsx. Чтение и вывод данных с использованием модуля openpyxl
Здравствуйте! Пытаюсь освоить работу чтения и записи данных в таблицы Excel, используя Python и его модуль openpyxl. При попытке записи или...

Чтение из текстового файла и вывод в консоль
Помогите пожалуйста, мне нужно чтобы из текстового файла в консоли выводился список людей, например 1 Иванов Иван Васильевич 2 Иванов...

3
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
07.11.2014, 19:42
Цитата Сообщение от OverDozero Посмотреть сообщение
русские символы, отображаются знаки "?"
OverDozero, попробуйте добавить вызов setlocale:
C++
1
2
3
4
int main()
{
    setlocale (LC_ALL,"");
    // ...
Добавлено через 5 минут
Цитата Сообщение от OverDozero Посмотреть сообщение
C++
1
wchar_t *res = (wchar_t *)malloc(sizeof(wchar_t) * len);
OverDozero, полученную память необходимо освободить, free()
Цитата Сообщение от OverDozero Посмотреть сообщение
CoInitialize(NULL);
CoUninitialize function
A thread must call CoUninitialize once for each successful call it has made to the CoInitialize
1
 Аватар для OverDozero
911 / 318 / 128
Регистрация: 07.04.2011
Сообщений: 1,725
07.11.2014, 20:43  [ТС]
Благодарю. Сетлокал помогло.Только включил заголовочный файл "clocale"
Ищу количество заполненных строк(код нашел в интернете)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Excel::_WorkbookPtr pBook; 
    pBook = pApp->Workbooks->Open(L"C:\\excel.xls", 0);
    Excel::_WorksheetPtr pSheet;
    pSheet = pBook->ActiveSheet;
 
    Excel::RangePtr cell;
    
    Excel::RangePtr pRange = pSheet->Cells;
 
    Excel::RangePtr pEndCellRow;
    pEndCellRow = pRange->GetRows();
    //получили количество строк
    long pRows  = 0;
    pRows = pEndCellRow->Count;
    printf("%d\n",pRows); //тут значение 65536-понятно.Файл формата xls у меня
    ///////////////////////////////////////////
    Excel::RangePtr pEndRange,plastFilledRange;
    //последняя ячейка в столбце 1
    pEndRange = pRange->Item[pRows][1];
    printf("%d\n",pEndRange);//непонятные цифры
    ///////////////////////////////////
    plastFilledRange = pRange->GetEnd(Excel::xlUp);
    printf("%d\n",plastFilledRange);//непонятные цифры
В коде пояснения,что вызывает затруднение.Значение 65536 выводится стабильно,а остальные-не понятен принцип вывода.В чем моя ошибка быть может?
Спасибо
0
 Аватар для OverDozero
911 / 318 / 128
Регистрация: 07.04.2011
Сообщений: 1,725
07.12.2014, 19:44  [ТС]
Вопрос решен.Всем спасибо за ОКАЗАННУЮ помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2014, 19:44
Помогаю со студенческими работами здесь

Чтение файла в кодировке utf-8 и вывод в консоль
Здорова! Пытаюсь прочитать файл в кодировке utf-8 (вот он ) и вывожу его в консоль, ничего не получается. Вот код: #include...

Чтение двух трехзначных чисел и вывод их суммы на консоль
Доброй ночи! Условие: с использованием API-функций создать консоль, считать из неё два трехзначных числа и вывести их сумму. Совместными...

Чтение текста из текстового фала, обработка слов и вывод в консоль
Задача программы: считать текст из текстового файла; выделить слова с повторяющимися буквами другим цветом; вывести весь текст в консоль. ...

Вывод пользователю приглашения для ввода в консоль и чтение int’а с консоли
Помогите решить задачу не могу понять ее. Написать функцию, которая объединяет в себе две операции: вывод пользователю приглашения...

Не могу разобраться. Чтение и вывод на экран всего содержимого файла .txt на консоль
#include &lt;cstdio&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt; using namespace std; void main() { ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru