Что нужно знать?
есть текстовый файл(с таблицей - несколько условных колонок разделяемых несколькими пробелами), нужно считать из него каждую "колонку" и сохранить в массивах. Потом отобразить эту таблицу в экселевском файле. Потом из экселевского отобразить в ворд. Программка должна быть написана на VC...
как считывать из текстового понятно, а как занести в эксель?
XL::_Application app; // The XL prefix specifies the namerange.
XL::Workbooks oWorkbooks;
XL::_Workbook oBook;
XL::Worksheets oWorksheets;
// Create and show instance of Excel
if(!app.CreateDispatch("Excel.Application"))
{
MessageBox(AfxGetMainWnd()->GetSafeHwnd(), "Ошибка при создании отчёта.\nНевозможно обратиться к Microsoft Excel.", "Ошибка", MB_ICONSTOP | MB_OK);
return;
}
app.SetSheetsInNewWorkbook(num_ses);
oWorkbooks = app.GetWorkbooks();
oBook = oWorkbooks.Add(covOptional);
oWorksheets = oBook.GetWorksheets();
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
COleVariant covTrue((short)TRUE);
COleVariant covFalse((short)FALSE);
XL::_Worksheet oSheet;
XL::Range oRange;
XL::Borders oBorders;
XL::Interior oInterior;
XL::Font oFont;
oSheet = oWorksheets.GetItem(COleVariant((short)session_num));
oSheet.Activate(); // Make the sheet selection work
oSheet.SetName("Your sheet name here");
// формируем заголовок таблицы
oRange = oSheet.GetRange(COleVariant("B2"),COleVariant("D2"));
oBorders = oRange.GetBorders();
oBorders.SetLineStyle(COleVariant((short)1)); // xlContinuous
oBorders.SetWeight(COleVariant((short)2)); // xlThin
oBorders.SetColorIndex(COleVariant((short)0));
// наводим красоту
oInterior = oRange.GetInterior();
oInterior.SetColor(COleVariant((long)RGB(0x33,0x66,0xFF)));
oFont = oRange.GetFont();
oFont.SetColor(COleVariant((long)RGB(0xFF,0xFF, 0xFF)));
oRange.SetHorizontalAlignment(COleVariant((short)-4108)); // xlCenter
oRange.SetItem(COleVariant((short)1), COleVariant((short)1), COleVariant("Your Column 1 Name"));
oRange.SetItem(COleVariant((short)1), COleVariant((short)2), COleVariant("Your Column 2 Name"));
oRange.SetItem(COleVariant((short)1), COleVariant((short)3), COleVariant("Your Column 3 Name"));
....
ну и так далее и в таком духе
О! Это целая эпопея. Тут много чего нужно знать. И поковыркаться конкретно ...
XL::_Application app; // The XL prefix specifies the namerange.
XL::Workbooks oWorkbooks;
XL::_Workbook oBook;
XL::Worksheets oWorksheets;
// Create and show instance of Excel
if(!app.CreateDispatch("Excel.Application"))
{
MessageBox(AfxGetMainWnd()->GetSafeHwnd(), "Ошибка при создании отчёта.\nНевозможно обратиться к Microsoft Excel.", "Ошибка", MB_ICONSTOP | MB_OK);
return;
}
app.SetSheetsInNewWorkbook(num_ses);
oWorkbooks = app.GetWorkbooks();
oBook = oWorkbooks.Add(covOptional);
oWorksheets = oBook.GetWorksheets();
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
COleVariant covTrue((short)TRUE);
COleVariant covFalse((short)FALSE);
XL::_Worksheet oSheet;
XL::Range oRange;
XL::Borders oBorders;
XL::Interior oInterior;
XL::Font oFont;
oSheet = oWorksheets.GetItem(COleVariant((short)session_num));
oSheet.Activate(); // Make the sheet selection work
oSheet.SetName("Your sheet name here");
// формируем заголовок таблицы
oRange = oSheet.GetRange(COleVariant("B2"),COleVariant("D2"));
oBorders = oRange.GetBorders();
oBorders.SetLineStyle(COleVariant((short)1)); // xlContinuous
oBorders.SetWeight(COleVariant((short)2)); // xlThin
oBorders.SetColorIndex(COleVariant((short)0));
// наводим красоту
oInterior = oRange.GetInterior();
oInterior.SetColor(COleVariant((long)RGB(0x33,0x66,0xFF)));
oFont = oRange.GetFont();
oFont.SetColor(COleVariant((long)RGB(0xFF,0xFF, 0xFF)));
oRange.SetHorizontalAlignment(COleVariant((short)-4108)); // xlCenter
oRange.SetItem(COleVariant((short)1), COleVariant((short)1), COleVariant("Your Column 1 Name"));
oRange.SetItem(COleVariant((short)1), COleVariant((short)2), COleVariant("Your Column 2 Name"));
oRange.SetItem(COleVariant((short)1), COleVariant((short)3), COleVariant("Your Column 3 Name"));
....
ну и так далее и в таком духе
А позвольте уточнить момент со стилями границ - у Вас есть некая таблица с полным содержанием всевозможных вариантов границ ячеек? Ну там - штрихпунктирная, двойная и т.д. Очень нужно навести лоск, а вот с границами полный абзац. Откопал где-то такой стиль -
oBorders.SetLineStyle(COleVariant(long(0xffffefe2)));
А больше и не знаю.
Откопал где-то такой стиль -
oBorders.SetLineStyle(COleVariant(long(0xffffefe2)));
Эх вы, TLB импортировать не можете. Это?
xlContinuous = $00000001;
xlDash = $FFFFEFED;
xlDashDot = $00000004;
xlDashDotDot = $00000005;
xlDot = $FFFFEFEA;
xlDouble = $FFFFEFE9;
xlSlantDashDot = $0000000D;
xlLineStyleNone = $FFFFEFD2;
Взято из ExcelXP.pas Delphi 7.
Эх вы, TLB импортировать не можете. Это?
xlContinuous = $00000001;
xlDash = $FFFFEFED;
xlDashDot = $00000004;
xlDashDotDot = $00000005;
xlDot = $FFFFEFEA;
xlDouble = $FFFFEFE9;
xlSlantDashDot = $0000000D;
xlLineStyleNone = $FFFFEFD2;
Взято из ExcelXP.pas Delphi 7.
Минутку - это же форум вроде бы по VC++? С Delphi я не очень-то и знаком...
Эх вы, TLB импортировать не можете. Это?
xlContinuous = $00000001;
xlDash = $FFFFEFED;
xlDashDot = $00000004;
xlDashDotDot = $00000005;
xlDot = $FFFFEFEA;
xlDouble = $FFFFEFE9;
xlSlantDashDot = $0000000D;
xlLineStyleNone = $FFFFEFD2;
Взято из ExcelXP.pas Delphi 7.
Это полный список? Больше стилей в Excel'e не бывает?
Это полный список? Больше стилей в Excel'e не бывает?
Если Borland не врет, и если в следующей после XP версии ничего не добавилось. Можешь визуально проверить. Есть что-то новое - копай в MSDN Office SDK для Excel.
Минутку - это же форум вроде бы по VC++? С Delphi я не очень-то и знаком...
Не думаю, чтобы такие простые определения нельзя было понять. И вообще, не нравится - копай MSDN самостоятельно.
А проще было бы все-таки импортировать TLB, тогда соответствующие константы автоматом в заголовочный файл заносятся. И не только в Дельфи.
Не думаю, чтобы такие простые определения нельзя было понять. И вообще, не нравится - копай MSDN самостоятельно.
А проще было бы все-таки импортировать TLB, тогда соответствующие константы автоматом в заголовочный файл заносятся. И не только в Дельфи.
Господа, если мне не изменяет память сам недавно об ентом спрашивал, дык нашлась великолепная dll-ка для работы с Excel, она где-то в разделе исходники:)