Russian Qt Forum

Qt => ActiveX => Тема начата: zalivaha от Декабрь 19, 2010, 15:30



Название: Сохранение Excel в разных форматах
Отправлено: zalivaha от Декабрь 19, 2010, 15:30
void File_XLSX::saveFileEXCEL(const QString &fileName, int fileFormat)
{
    if(this->isOpenExcel() && !fileName.isEmpty()){
        Workbook->dynamicCall("SaveAs(Variant,Variant)",
                              QString(fileName).replace("/", "\\"),
                              fileFormat);
    }
}

enum     Excel::XlFileFormat {
  Excel::xlAddIn = 18, Excel::xlCSV = 6, Excel::xlCSVMac = 22, Excel::xlCSVMSDOS = 24,
  Excel::xlCSVWindows = 23, Excel::xlDBF2 = 7, Excel::xlDBF3 = 8, Excel::xlDBF4 = 11,
  Excel::xlDIF = 9, Excel::xlExcel2 = 16, Excel::xlExcel2FarEast = 27, Excel::xlExcel3 = 29,
  Excel::xlExcel4 = 33, Excel::xlExcel5 = 39, Excel::xlExcel7 = 39, Excel::xlExcel9795 = 43,
  Excel::xlExcel4Workbook = 35, Excel::xlIntlAddIn = 26, Excel::xlIntlMacro = 25, Excel::xlWorkbookNormal = -4143,
  Excel::xlSYLK = 2, Excel::xlTemplate = 17, Excel::xlCurrentPlatformText = -4158, Excel::xlTextMac = 19,
  Excel::xlTextMSDOS = 21, Excel::xlTextPrinter = 36, Excel::xlTextWindows = 20, Excel::xlWJ2WD1 = 14,
  Excel::xlWK1 = 5, Excel::xlWK1ALL = 31, Excel::xlWK1FMT = 30, Excel::xlWK3 = 15,
  Excel::xlWK4 = 38, Excel::xlWK3FM3 = 32, Excel::xlWKS = 4, Excel::xlWorks2FarEast = 28,
  Excel::xlWQ1 = 34, Excel::xlWJ3 = 40, Excel::xlWJ3FJ3 = 41, Excel::xlUnicodeText = 42,
  Excel::xlHtml = 44, Excel::xlWebArchive = 45, Excel::xlXMLSpreadsheet = 46, Excel::xlExcel12 = 50,
  Excel::xlOpenXMLWorkbook = 51, Excel::xlOpenXMLWorkbookMacroEnabled = 52, Excel::xlOpenXMLTemplateMacroEnabled = 53, Excel::xlTemplate8 = 17,
  Excel::xlOpenXMLTemplate = 54, Excel::xlAddIn8 = 18, Excel::xlOpenXMLAddIn = 55, Excel::xlExcel8 = 56,
  Excel::xlOpenDocumentSpreadsheet = 60, Excel::xlWorkbookDefault = 51
}


Название: Re: Сохранение Excel в разных форматах
Отправлено: kolob от Декабрь 22, 2010, 14:40
Цитировать
void SaveAs(const QVariant&,const QVariant&,const QVariant&,const QVariant&,const QVariant&,const QVariant&,XlSaveAsAccessMode);

а что делать с остальными параметрами?

мне ошибку выдает
Цитировать
QAxBase: Error calling IDispatch member SaveAs: Exception thrown by server.


Название: Re: Сохранение Excel в разных форматах
Отправлено: kolob от Декабрь 22, 2010, 17:09
переписал вот так:
workbook->dynamicCall("SaveAs(const QVariant&, const QVariant&)", QVariant(fileName), QVariant(int))

где fileName - полный путь к файлу + имя файла + расширение
      int - то что zalivaha указал выше

У меня была ошибка, я брал (например) параметр типа Excel::xlTextPrinter ,а надо было 36, тогда все правильно будет

Вот ссылка полезная excel (http://hopf.chem.brandeis.edu/yanglingfa/Qt/COM/xls/html/class_excel_1_1_workbook.html), может кому нибудь понадобиться. Мне пригодилось.