| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340 |
- /**************************************************************************************************
- 版本所有(C), 2020-2022, 北京普达迪泰
- ***************************************************************************************************
- 文 件 名: DynamicReport.cpp
- 功能描述: 动态测量报告
- 版 本 号: 1.00初版
- 作 者: HYF
- 生成日期; 2021-12-20
- 最近修改:
- 函数列表:
- 修改历史:
- 1.日 期 :2021-12-20
- 作 者 : HYF
- 修改内容 : 创建文件
- **************************************************************************************************/
- #include "pch.h"
- #include "DMS.h"
- #include "DynamicReport.h"
- #include "afxdialogex.h"
- #include "DmsDoc.h"
- #include "LABEL.H"
- #include "DmsDoc.h"
- #include "CppSQLite3.h"
- #include "TaskManager.h"
- #include "PostureDataAngleManager.h"
- #include "PostureDataPointManager.h"
- #include "GridCtrl.h"
- #include "Excel.h"
- #include "resource.h"
- // DynamicReport 对话框
- IMPLEMENT_DYNAMIC(DynamicReport, CDialogEx)
- DynamicReport::DynamicReport(CWnd* pParent /*=nullptr*/)
- : CDialogEx(IDD_DLG_DYNAMIC_REPORT, pParent)
- {
- }
- DynamicReport::DynamicReport(CWnd* pParent, DWORD taskId)
- : CDialogEx(IDD_DLG_DYNAMIC_REPORT, pParent)
- , m_taskId(taskId)
- {
- }
- DynamicReport::~DynamicReport()
- {
- }
- void DynamicReport::DoDataExchange(CDataExchange* pDX)
- {
- CDialogEx::DoDataExchange(pDX);
- DDX_Control(pDX, IDC_STATIC_DYNAMIC_REPORT_TITLE, m_Static_Title);
- DDX_Control(pDX, IDC_CUSTOM_GRIDCTRL, m_GridCtrl);
- }
- BEGIN_MESSAGE_MAP(DynamicReport, CDialogEx)
- ON_BN_CLICKED(IDC_BTN_EXPORT_EXCEL, &DynamicReport::OnBnClickedBtnExportExcel)
- ON_BN_CLICKED(IDC_BTN_EXPORT_PDF, &DynamicReport::OnBnClickedBtnExportPdf)
- ON_BN_CLICKED(IDC_BTN_PRINT, &DynamicReport::OnBnClickedBtnPrint)
- ON_WM_SIZE()
- END_MESSAGE_MAP()
- /**************************************************************************************************
- 函 数 名 :GetDocument
- 功能描述 :获取文档对象
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- CDmsDoc *DynamicReport::GetDocument()
- {
- CFrameWnd *pFrm = (CFrameWnd *)(AfxGetApp()->m_pMainWnd);
- ASSERT(pFrm);
- CView *pView = pFrm->GetActiveView();
- CDmsDoc *pDoc = (CDmsDoc *)(pView->GetDocument());
- ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CDmsDoc)));
- return pDoc;
- }
- // DynamicReport 消息处理程序
- /**************************************************************************************************
- 函 数 名 :OnBnClickedBtnExportPdf
- 功能描述 :导出PDF
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void DynamicReport::OnBnClickedBtnExportPdf()
- {
-
- }
- /**************************************************************************************************
- 函 数 名 :OnBnClickedBtnPrint
- 功能描述 :直接打印
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void DynamicReport::OnBnClickedBtnPrint()
- {
- m_GridCtrl.Print();
- }
- // 初始化
- BOOL DynamicReport::OnInitDialog()
- {
- CDialogEx::OnInitDialog();
- //创建图标
- HICON icon;
- //加载图标
- icon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- SetIcon(icon, true);
- SetIcon(icon, false);
- m_Static_Title.SetFontSize(16);
- m_Static_Title.SetFontBold(TRUE);
- // 初始化数据
- CDmsDoc *pDoc = GetDocument();
- TaskManager *pTaskManager = pDoc->GetTaskManager();
- ASSERT(pTaskManager != NULL);
- CppSQLite3Query q = pTaskManager->Query(m_taskId);
- if (!q.eof()) {
- CString szTitle;
- szTitle.Format("%s-测量报告", q.getStringField("task_title"));
- m_Static_Title.SetWindowText(szTitle);
- }
- q.finalize();
- // 初始化Grid数据
- InitGridReportData();
- return TRUE;
- }
- /**************************************************************************************************
- 函 数 名 :InitGridReportData
- 功能描述 :展示点云数据
- 输入参数 :略
- 输出参数 :略
- 返 回 值 :略
- **************************************************************************************************/
- void DynamicReport::InitGridReportData()
- {
- // 初始化数据
- TaskManager *pTaskManager = GetDocument()->GetTaskManager();
- ASSERT(pTaskManager != NULL);
- // POINT数据访问入口
- PostureDataPointManager *pPointManager = GetDocument()->GetPostureDataPointManager();
- ASSERT(pPointManager != NULL);
- // Thrust Line数据访问入口
- PostureDataAngleManager *pAngleManager = GetDocument()->GetPostureDataAngleManager();
- ASSERT(pAngleManager != NULL);
- int iPointCount = pPointManager->CountOfReport(m_taskId);
- int iAngleCount = pAngleManager->Count(m_taskId);
- int iRowCount = iPointCount + iAngleCount + 15;
- m_GridCtrl.DeleteAllItems();
- m_GridCtrl.SetGridLines(GVL_NONE);
- m_GridCtrl.SetEditable(FALSE);
- m_GridCtrl.GetDefaultCell(FALSE, FALSE)->SetBackClr(RGB(0xFF, 0xFF, 0xFF));
- m_GridCtrl.SetSingleRowSelection(FALSE);
- m_GridCtrl.SetSingleColSelection(FALSE);
- m_GridCtrl.EnableSelection(FALSE);
- m_GridCtrl.SetFrameFocusCell(FALSE);
- TRY
- {
- m_GridCtrl.SetRowCount(iRowCount);
- m_GridCtrl.SetColumnCount(20);
- m_GridCtrl.SetFixedRowCount(0);
- m_GridCtrl.SetFixedColumnCount(0);
- m_GridCtrl.SetColumnWidth(0, 40);
- m_GridCtrl.SetColumnWidth(1, 40);
- m_GridCtrl.SetColumnWidth(2, 100);
- m_GridCtrl.SetColumnWidth(3, 100);
- m_GridCtrl.SetColumnWidth(4, 80);
- m_GridCtrl.SetColumnWidth(5, 80);
- m_GridCtrl.SetColumnWidth(6, 80);
- m_GridCtrl.SetColumnWidth(7, 80);
- m_GridCtrl.SetColumnWidth(8, 80);
- m_GridCtrl.SetColumnWidth(9, 80);
- m_GridCtrl.SetColumnWidth(10, 80);
- m_GridCtrl.SetColumnWidth(11, 80);
- m_GridCtrl.SetColumnWidth(12, 80);
- m_GridCtrl.SetColumnWidth(13, 80);
- m_GridCtrl.SetColumnWidth(14, 80);
- m_GridCtrl.SetColumnWidth(15, 80);
- m_GridCtrl.SetColumnWidth(16, 80);
- m_GridCtrl.SetColumnWidth(17, 80);
- m_GridCtrl.SetColumnWidth(18, 80);
- m_GridCtrl.SetColumnWidth(19, 40);
- }
- CATCH(CMemoryException, e)
- {
- e->ReportError();
- return;
- }
- END_CATCH
- // Get the font
- CFont* pFont = m_GridCtrl.GetFont();
- int iRow = 1;
- int iCol = 1;
- COLORREF bkClrHeader = RGB(128, 128, 128);
- COLORREF bkClrData = RGB(255, 255, 255);
- CppSQLite3Query q = pTaskManager->Query(m_taskId);
- if (!q.eof()) {
- CString szTaskTime = q.getStringField("task_time");
- CString szTaskTitle = q.getStringField("task_title");
- CString szEquipCode = q.getStringField("equip_code");
- CString szEquipTypeCode = q.getStringField("equip_type_code");
- GV_ITEM ItemTitle;
- ItemTitle.mask = (GVIF_TEXT | GVIF_BORDER | GVIF_FONT);
- ItemTitle.crBkClr = bkClrHeader; // or - m_Grid.SetItemBkColour(row, col, clr);
- ItemTitle.nBorder = GVIS_BDR_BOTTOM;
- ItemTitle.row = iRow;
- ItemTitle.col = iCol;
- ItemTitle.strText = szTaskTitle;
- LOGFONT lfTitle;
- pFont->GetLogFont(&lfTitle);
- // Make it true-type
- memcpy(lfTitle.lfFaceName, _T("Arial"), 6);
- lfTitle.lfHeight = -18;
- lfTitle.lfWeight = FW_BOLD;
- memcpy(&(ItemTitle.lfFont), &lfTitle, sizeof(LOGFONT));
- //Item.lfFont = lf;
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol, iRow, 18);
- /*********************************************************************************************/
- iRow += 1;
- CString strTaskInfo;
- strTaskInfo.Format("型号:%s 编号:%s 测量时间:%s", szEquipTypeCode, szEquipCode, szTaskTime);
- GV_ITEM Item;
- Item.row = iRow;
- Item.col = 1;
- Item.mask = (GVIF_TEXT);
- Item.nFormat = DT_SINGLELINE | DT_VCENTER | DT_LEFT;
- Item.crBkClr = bkClrHeader; // or - m_Grid.SetItemBkColour(row, col, clr);
- Item.strText = strTaskInfo;
- m_GridCtrl.SetItem(&Item);
- m_GridCtrl.MergeCells(iRow, iCol, iRow, 18);
- iRow += 1;
- /********************************************************************************************/
- iRow = PrintPointData(m_taskId, iRow);
- iRow = PrintAngleData(m_taskId, iRow);
- }
- return;
- }
- /**************************************************************************************************
- 函 数 名 :PrintPointData
- 功能描述 :显示数据-点
- 输出参数 :略
- 返 回 值 :略
- **************************************************************************************************/
- int DynamicReport::PrintPointData(DWORD dwTaskId, int iStartRow)
- {
- // Get the font
- CFont* pFont = m_GridCtrl.GetFont();
- CString str;
- int iRow = iStartRow + 1;
- int iCol = 1;
- GV_ITEM ItemCat;
- ItemCat.row = iRow;
- ItemCat.col = iCol;
- ItemCat.mask = (GVIF_TEXT | GVIF_BORDER | GVIF_FONT | GVIF_FORMAT);
- ItemCat.nFormat = DT_SINGLELINE | DT_VCENTER | DT_LEFT;
- ItemCat.nBorder = GVIS_BDR_BOTTOM;
- ItemCat.strText = _T("点");
- LOGFONT lfTitle;
- pFont->GetLogFont(&lfTitle);
- // Make it true-type
- memcpy(lfTitle.lfFaceName, _T("Arial"), 6);
- lfTitle.lfWeight = FW_BOLD;
- memcpy(&(ItemCat.lfFont), &lfTitle, sizeof(LOGFONT));
- //Item.lfFont = lf;
- m_GridCtrl.SetItem(&ItemCat);
- m_GridCtrl.MergeCells(iRow, iCol, iRow, 18);
- /*******************************************************************************************/
- iRow += 1;
- GV_ITEM ItemTitle;
- ItemTitle.mask = GVIF_TEXT | GVIF_FORMAT | GVIF_BORDER;
- ItemTitle.nBorder = GVIS_BDR_BOTTOM;
- ItemTitle.nFormat = DT_SINGLELINE | DT_VCENTER;
- ItemTitle.row = iRow;
- ItemTitle.col = iCol;
- ItemTitle.nFormat = DT_CENTER;
- ItemTitle.strText = _T("序号");
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol, iRow + 1, iCol);
- ItemTitle.row = iRow;
- ItemTitle.col = iCol+1;
- ItemTitle.nFormat = DT_CENTER;
- ItemTitle.strText = _T("名称");
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol+1, iRow + 1, iCol+1);
- ItemTitle.row = iRow;
- ItemTitle.col = iCol+2;
- ItemTitle.nFormat = DT_CENTER;
- ItemTitle.strText = _T("编码");
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol + 2, iRow + 1, iCol + 2);
- ItemTitle.row = iRow;
- ItemTitle.col = iCol + 3;
- ItemTitle.nFormat = DT_CENTER;
- ItemTitle.strText = _T("理论值");
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol + 3, iRow, iCol + 5);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 3;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("X");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 4;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Y");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 5;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Z");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow;
- ItemTitle.col = iCol + 6;
- ItemTitle.nFormat = DT_CENTER;
- ItemTitle.strText = _T("实测值");
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol + 6, iRow, iCol + 8);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 6;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("X");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 7;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Y");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 8;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Z");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow;
- ItemTitle.col = iCol + 9;
- ItemTitle.nFormat = DT_CENTER;
- ItemTitle.strText = _T("说明");
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol + 9, iRow + 1, iCol + 9);
- // POINT数据访问入口
- PostureDataPointManager *pPointManager = GetDocument()->GetPostureDataPointManager();
- ASSERT(pPointManager != NULL);
- GV_ITEM Item;
- Item.mask = GVIF_TEXT | GVIF_FORMAT;
- Item.nFormat = DT_SINGLELINE | DT_VCENTER;
- iRow += 1;
- CppSQLite3Query q = pPointManager->QueryOfReport(dwTaskId);
- int iIndex = 0;
- while (!q.eof()) {
- iRow += 1;
- iIndex++;
- // 序号
- Item.row = iRow;
- Item.col = iCol;
- Item.nFormat = DT_CENTER;
- str.Format("%d", iIndex);
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 名称
- Item.row = iRow;
- Item.col = iCol + 1;
- Item.nFormat = DT_CENTER;
- str.Format("%s", q.getStringField("point_title"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // CODE
- Item.row = iRow;
- Item.col = iCol + 2;
- Item.nFormat = DT_CENTER;
- str.Format("%s", q.getStringField("point_code"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 理论 - X
- Item.row = iRow;
- Item.col = iCol + 3;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", q.getFloatField("point_e_x"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 理论 - Y
- Item.row = iRow;
- Item.col = iCol + 4;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", q.getFloatField("point_e_y"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 理论 - Z
- Item.row = iRow;
- Item.col = iCol + 5;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", q.getFloatField("point_e_z"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 实测 - X
- Item.row = iRow;
- Item.col = iCol + 6;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", q.getFloatField("point_a_x"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 实测 - Y
- Item.row = iRow;
- Item.col = iCol + 7;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", q.getFloatField("point_a_y"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 实测 - Z
- Item.row = iRow;
- Item.col = iCol + 8;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", q.getFloatField("point_a_z"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 说明
- Item.row = iRow;
- Item.col = iCol + 9;
- Item.nFormat = DT_LEFT;
- str.Format("%s", q.getStringField("point_desc"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- q.nextRow();
- }
- q.finalize();
- return iRow + 1;
- }
- /**************************************************************************************************
- 函 数 名 :PrintAngleData
- 功能描述 :显示数据-偏角
- 输出参数 :略
- 返 回 值 :略
- **************************************************************************************************/
- int DynamicReport::PrintAngleData(DWORD dwTaskId, int iStartRow)
- {
- // Get the font
- CFont* pFont = m_GridCtrl.GetFont();
- CString str;
- int iRow = iStartRow + 1;
- int iCol = 1;
- GV_ITEM ItemCat;
- ItemCat.row = iRow;
- ItemCat.col = iCol;
- ItemCat.mask = (GVIF_TEXT | GVIF_BORDER | GVIF_FONT | GVIF_FORMAT);
- ItemCat.nFormat = DT_SINGLELINE | DT_VCENTER | DT_LEFT;
- ItemCat.nBorder = GVIS_BDR_BOTTOM;
- ItemCat.strText = _T("推力线");
- LOGFONT lfTitle;
- pFont->GetLogFont(&lfTitle);
- // Make it true-type
- memcpy(lfTitle.lfFaceName, _T("Arial"), 6);
- lfTitle.lfWeight = FW_BOLD;
- memcpy(&(ItemCat.lfFont), &lfTitle, sizeof(LOGFONT));
- //Item.lfFont = lf;
- m_GridCtrl.SetItem(&ItemCat);
- m_GridCtrl.MergeCells(iRow, iCol, iRow, 17);
- /*******************************************************************************************/
- iRow += 1;
- GV_ITEM ItemTitle;
- ItemTitle.mask = GVIF_TEXT | GVIF_FORMAT | GVIF_BORDER;
- ItemTitle.nBorder = GVIS_BDR_BOTTOM;
- ItemTitle.nFormat = DT_SINGLELINE | DT_VCENTER;
- ItemTitle.row = iRow;
- ItemTitle.col = iCol;
- ItemTitle.nFormat = DT_CENTER;
- ItemTitle.strText = _T("序号");
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol, iRow + 1, iCol);
- ItemTitle.row = iRow;
- ItemTitle.col = iCol + 1;
- ItemTitle.nFormat = DT_CENTER;
- ItemTitle.strText = _T("分机");
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol + 1, iRow + 1, iCol + 1);
- // 偏移量
- ItemTitle.row = iRow;
- ItemTitle.col = iCol + 2;
- ItemTitle.nFormat = DT_CENTER;
- ItemTitle.strText = _T("偏移量");
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol + 2, iRow, iCol + 4);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 2;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("X");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 3;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Y");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 4;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Z");
- m_GridCtrl.SetItem(&ItemTitle);
- // 调校量
- ItemTitle.row = iRow;
- ItemTitle.col = iCol + 5;
- ItemTitle.nFormat = DT_CENTER;
- ItemTitle.strText = _T("调校量");
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol + 5, iRow, iCol + 7);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 5;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("X");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 6;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Y");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 7;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Z");
- m_GridCtrl.SetItem(&ItemTitle);
- // 向量
- ItemTitle.row = iRow;
- ItemTitle.col = iCol + 8;
- ItemTitle.nFormat = DT_CENTER;
- ItemTitle.strText = _T("向量");
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol + 8, iRow, iCol + 10);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 8;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("X");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 9;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Y");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 10;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Z");
- m_GridCtrl.SetItem(&ItemTitle);
- // 起点
- ItemTitle.row = iRow;
- ItemTitle.col = iCol + 11;
- ItemTitle.nFormat = DT_CENTER;
- ItemTitle.strText = _T("起点");
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol + 11, iRow, iCol + 13);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 11;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("X");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 12;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Y");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 13;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Z");
- m_GridCtrl.SetItem(&ItemTitle);
- // 终点
- ItemTitle.row = iRow;
- ItemTitle.col = iCol + 14;
- ItemTitle.nFormat = DT_CENTER;
- ItemTitle.strText = _T("终点");
- m_GridCtrl.SetItem(&ItemTitle);
- m_GridCtrl.MergeCells(iRow, iCol + 14, iRow, iCol + 16);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 14;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("X");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 15;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Y");
- m_GridCtrl.SetItem(&ItemTitle);
- ItemTitle.row = iRow + 1;
- ItemTitle.col = iCol + 16;
- ItemTitle.nFormat = DT_RIGHT;
- ItemTitle.strText = _T("Z");
- m_GridCtrl.SetItem(&ItemTitle);
- /**********************************************************************************/
- // Thrust Line数据访问入口
- PostureDataAngleManager *pAngleManager = GetDocument()->GetPostureDataAngleManager();
- ASSERT(pAngleManager != NULL);
- GV_ITEM Item;
- Item.mask = GVIF_TEXT | GVIF_FORMAT;
- Item.nFormat = DT_SINGLELINE | DT_VCENTER;
- iRow += 1;
- CppSQLite3Query q = pAngleManager->Query(dwTaskId);
- int iIndex = 0;
- while (!q.eof()) {
- iRow += 1;
- iIndex++;
- Item.row = iRow;
- // 序号
- Item.col = iCol;
- Item.nFormat = DT_CENTER;
- str.Format("%d", iIndex);
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 名称
- Item.col = iCol + 1;
- Item.nFormat = DT_CENTER;
- str.Format("%s", q.getStringField("equip_place"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 偏移量 - X
- Item.col = iCol + 2;
- Item.nFormat = DT_RIGHT;
- str.Format("%.2f'", q.getFloatField("angle_a_x"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 偏移量 - Y
- Item.row = iRow;
- Item.col = iCol + 3;
- Item.nFormat = DT_RIGHT;
- str.Format("%.2f'", q.getFloatField("angle_a_y"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 偏移量 - Z
- Item.col = iCol + 4;
- Item.nFormat = DT_RIGHT;
- str.Format("%.2f'", q.getFloatField("angle_a_z"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 调校量 - X
- Item.col = iCol + 5;
- Item.nFormat = DT_RIGHT;
- str.Format("%.2f'", q.getFloatField("angle_e_x"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 调校量 - Y
- Item.col = iCol + 6;
- Item.nFormat = DT_RIGHT;
- str.Format("%.2f'", q.getFloatField("angle_e_y"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 调校量 - Z
- Item.col = iCol + 7;
- Item.nFormat = DT_RIGHT;
- str.Format("%.2f'", q.getFloatField("angle_e_z"));
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- DOUBLE x1 = q.getFloatField("line_start_x");
- DOUBLE y1 = q.getFloatField("line_start_y");
- DOUBLE z1 = q.getFloatField("line_start_z");
- DOUBLE x2 = q.getFloatField("line_end_x");
- DOUBLE y2 = q.getFloatField("line_end_y");
- DOUBLE z2 = q.getFloatField("line_end_z");
- DOUBLE vx1 = x2 - x1;
- DOUBLE vy1 = y2 - y1;
- DOUBLE vz1 = z2 - z1;
- // 向量 - X
- Item.col = iCol + 8;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", vx1);
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 向量 - Y
- Item.col = iCol + 9;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", vy1);
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 向量 - Z
- Item.col = iCol + 10;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", vz1);
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 起点 - X
- Item.col = iCol + 11;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", x1);
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 起点 - Y
- Item.col = iCol + 12;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", y1);
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 起点 - Z
- Item.col = iCol + 13;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", z1);
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 终点 - X
- Item.col = iCol + 14;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", x2);
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 终点 - Y
- Item.col = iCol + 15;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", y2);
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- // 终点 - Z
- Item.col = iCol + 16;
- Item.nFormat = DT_RIGHT;
- str.Format("%.3f", z2);
- Item.strText = str;
- m_GridCtrl.SetItem(&Item);
- q.nextRow();
- }
- q.finalize();
- return iRow + 1;
- }
- /**************************************************************************************************
- 函 数 名 :OnBnClickedBtnExportExcel
- 功能描述 :导出EXCEL
- 输入参数 :无
- 输出参数 :无
- 返 回 值 :void
- **************************************************************************************************/
- void DynamicReport::OnBnClickedBtnExportExcel()
- {
- BOOL isOpen = FALSE;
- CFileDialog dlg(isOpen, 0, 0, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Excel Files(*.xlsx)|*.xlsx");
- if (IDOK != dlg.DoModal())
- {
- return;
- }
- CString szFilePath = dlg.GetPathName();
- // 初始化数据
- TaskManager *pTaskManager = GetDocument()->GetTaskManager();
- ASSERT(pTaskManager != NULL);
- CppSQLite3Query q = pTaskManager->Query(m_taskId);
- if (q.eof()) {
- MessageBox(_T("没有数据"));
- q.finalize();
- return;
- }
- CString szTaskTime = q.getStringField("task_time");
- CString szTaskTitle = q.getStringField("task_title");
- CString szEquipCode = q.getStringField("equip_code");
- CString szEquipTypeCode = q.getStringField("equip_type_code");
- CString szReportTitle;
- szReportTitle.Format("测量报告-%s", szTaskTitle);
- CExport2Excel excelApp;
- bool bRet = excelApp.CreateExcel(szFilePath);
- if (!bRet) {
- MessageBox(_T("本机的Excel未安装或安装不完整,请重新安装Office Excel"));
- return;
- }
- excelApp.CreateSheet(szReportTitle);
- excelApp.SetFont(1, _T("宋体"), 16, true);
- excelApp.SetColWidth(1, 5);
- excelApp.SetColWidth(2, 10);
- excelApp.SetColWidth(3, 10);
- excelApp.SetColWidth(4, 10);
- excelApp.SetColWidth(5, 10);
- excelApp.SetColWidth(6, 10);
- excelApp.SetColWidth(7, 10);
- excelApp.SetColWidth(8, 10);
- excelApp.SetColWidth(9, 10);
- excelApp.SetColWidth(10, 10);
- excelApp.SetColWidth(11, 10);
- excelApp.SetColWidth(12, 10);
- excelApp.SetColWidth(13, 10);
- excelApp.SetColWidth(14, 10);
- excelApp.SetColWidth(15, 10);
- int iRow = 1;
- // 标题: 第1行
- excelApp.SetFont(iRow, _T("宋体"), 16, true);
- excelApp.MergeCells(iRow, 1, iRow, 16);
- excelApp.SetHorizontalAlignment(iRow, 1, xlCenter);
- excelApp.WriteData(1, 1, szTaskTitle);
- // 任务内容:第2行
- iRow += 1;
- CString strTaskInfo;
- strTaskInfo.Format("型号:%s 编号:%s 测量时间:%s", szEquipTypeCode, szEquipCode, szTaskTime);
- excelApp.MergeCells(iRow, 1, iRow, 16);
- excelApp.SetHorizontalAlignment(iRow, 1, xlLeft);
- excelApp.WriteData(2, 1, strTaskInfo);
- // 详情: 1. 点 2.推力线偏角
- iRow = ExcelPointData(&excelApp, m_taskId, iRow);
- iRow = ExcelAngleData(&excelApp, m_taskId, iRow);
- q.finalize();
- excelApp.Save();
- excelApp.Close();
- CString szMsg;
- szMsg.Format("导出文件成功,保存在%s", szFilePath);
- MessageBox(szMsg);
- }
- /**************************************************************************************************
- 函 数 名 :ExcelPointsData
- 功能描述 :Excel数据-点
- 输出参数 :略
- 返 回 值 :略
- **************************************************************************************************/
- int DynamicReport::ExcelPointData(CExport2Excel *pExcel, DWORD dwTaskId, int iStartRow)
- {
- CString str;
- int iRow = iStartRow + 2;
- // 标题: 第1行
- pExcel->SetFont(iRow, _T("宋体"), 14, true);
- pExcel->MergeCells(iRow, 1, iRow, 10);
- pExcel->SetHorizontalAlignment(iRow, 1, xlLeft);
- pExcel->WriteData(iRow, 1, _T("点"));
- // Header
- iRow += 1;
- str.Format(_T("序号"));
- pExcel->WriteData(iRow, 1, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 1, xlCenter);
- pExcel->MergeCells(iRow, 1, iRow + 1, 1);
- str.Format(_T("名称"));
- pExcel->WriteData(iRow, 2, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 2, xlCenter);
- pExcel->MergeCells(iRow, 2, iRow + 1, 2);
- str.Format(_T("编码"));
- pExcel->WriteData(iRow, 3, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 3, xlCenter);
- pExcel->MergeCells(iRow, 3, iRow + 1, 3);
- str.Format(_T("理论值"));
- pExcel->WriteData(iRow, 4, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 4, xlCenter);
- pExcel->MergeCells(iRow, 4, iRow, 6);
- str.Format(_T("X"));
- pExcel->WriteData(iRow + 1, 4, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 4, xlRight);
- str.Format(_T("Y"));
- pExcel->WriteData(iRow + 1, 5, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 5, xlRight);
- str.Format(_T("Z"));
- pExcel->WriteData(iRow + 1, 6, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 6, xlRight);
- str.Format(_T("实测值"));
- pExcel->WriteData(iRow, 7, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 7, xlCenter);
- pExcel->MergeCells(iRow, 7, iRow, 9);
- str.Format(_T("X"));
- pExcel->WriteData(iRow + 1, 7, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 7, xlRight);
- str.Format(_T("Y"));
- pExcel->WriteData(iRow + 1, 8, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 8, xlRight);
- str.Format(_T("Z"));
- pExcel->WriteData(iRow + 1, 9, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 9, xlRight);
- str.Format(_T("说明"));
- pExcel->WriteData(iRow, 10, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 10, xlLeft);
- pExcel->MergeCells(iRow, 10, iRow + 1, 10);
- // POINT数据访问入口
- PostureDataPointManager *pPointManager = GetDocument()->GetPostureDataPointManager();
- ASSERT(pPointManager != NULL);
- iRow++;
- CppSQLite3Query q = pPointManager->QueryOfReport(dwTaskId);
- int iIndex = 0;
- while (!q.eof()) {
- iRow++;
- iIndex += 1;
- // 序号
- str.Format("%d", iIndex);
- pExcel->WriteData(iRow, 1, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 1, xlCenter);
- // 名称
- str.Format("%s", q.getStringField("point_title"));
- pExcel->WriteData(iRow, 2, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 2, xlCenter);
- // CODE
- str.Format("%s", q.getStringField("point_code"));
- pExcel->WriteData(iRow, 3, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 3, xlCenter);
- // 理论 - X
- str.Format("%f", q.getFloatField("point_e_x"));
- pExcel->WriteData(iRow, 4, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 4, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 4, "0.000");
- // 理论 - Y
- str.Format("%f", q.getFloatField("point_e_y"));
- pExcel->WriteData(iRow, 5, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 5, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 5, "0.000");
- // 理论 - Z
- str.Format("%f", q.getFloatField("point_e_z"));
- pExcel->WriteData(iRow, 6, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 6, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 6, "0.000");
- // 实测 - X
- str.Format("%f", q.getFloatField("point_a_x"));
- pExcel->WriteData(iRow, 7, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 7, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 7, "0.000");
- // 实测 - Y
- str.Format("%f", q.getFloatField("point_a_y"));
- pExcel->WriteData(iRow, 8, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 8, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 8, "0.000");
- // 实测 - Z
- str.Format("%f", q.getFloatField("point_a_z"));
- pExcel->WriteData(iRow, 9, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 9, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 9, "0.000");
- // 说明
- str.Format("%s", q.getStringField("point_desc"));
- pExcel->WriteData(iRow, 10, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 10, xlLeft);
-
- q.nextRow();
- }
- q.finalize();
- pExcel->SetBorders(iStartRow + 2, 1, iRow, 10, true, true, true, true, true, true, xlThin, xlThin, xlThin, xlThin, xlThin, xlThin);
- return iRow;
- }
- /**************************************************************************************************
- 函 数 名 :ExcelAngleData
- 功能描述 :显示数据-点
- 输出参数 :略
- 返 回 值 :略
- **************************************************************************************************/
- int DynamicReport::ExcelAngleData(CExport2Excel *pExcel, DWORD dwTaskId, int iStartRow)
- {
- CString str;
- int iRow = iStartRow + 2;
- // 标题: 第1行
- pExcel->SetFont(iRow, _T("宋体"), 14, true);
- pExcel->MergeCells(iRow, 1, iRow, 17);
- pExcel->SetHorizontalAlignment(iRow, 1, xlLeft);
- pExcel->WriteData(iRow, 1, _T("推力线偏角"));
- // Header
- iRow += 1;
- str.Format(_T("序号"));
- pExcel->WriteData(iRow, 1, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 1, xlCenter);
- pExcel->MergeCells(iRow, 1, iRow + 1, 1);
- str.Format(_T("分机"));
- pExcel->WriteData(iRow, 2, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 2, xlCenter);
- pExcel->MergeCells(iRow, 2, iRow + 1, 2);
- str.Format(_T("偏移量"));
- pExcel->WriteData(iRow, 3, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 3, xlCenter);
- pExcel->MergeCells(iRow, 3, iRow, 5);
- str.Format(_T("X"));
- pExcel->WriteData(iRow + 1, 3, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 3, xlRight);
- str.Format(_T("Y"));
- pExcel->WriteData(iRow + 1, 4, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 4, xlRight);
- str.Format(_T("Z"));
- pExcel->WriteData(iRow + 1, 5, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 5, xlRight);
- str.Format(_T("调校量"));
- pExcel->WriteData(iRow, 6, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 6, xlCenter);
- pExcel->MergeCells(iRow, 6, iRow, 8);
- str.Format(_T("X"));
- pExcel->WriteData(iRow + 1, 6, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 6, xlRight);
- str.Format(_T("Y"));
- pExcel->WriteData(iRow + 1, 7, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 7, xlRight);
- str.Format(_T("Z"));
- pExcel->WriteData(iRow + 1, 8, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 8, xlRight);
- str.Format(_T("向量"));
- pExcel->WriteData(iRow, 9, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 9, xlCenter);
- pExcel->MergeCells(iRow, 9, iRow, 11);
- str.Format(_T("X"));
- pExcel->WriteData(iRow + 1, 9, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 9, xlRight);
- str.Format(_T("Y"));
- pExcel->WriteData(iRow + 1, 10, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 10, xlRight);
- str.Format(_T("Z"));
- pExcel->WriteData(iRow + 1, 11, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 11, xlRight);
- str.Format(_T("起点"));
- pExcel->WriteData(iRow, 12, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 12, xlCenter);
- pExcel->MergeCells(iRow, 12, iRow, 14);
- str.Format(_T("X"));
- pExcel->WriteData(iRow + 1, 12, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 12, xlRight);
- str.Format(_T("Y"));
- pExcel->WriteData(iRow + 1, 13, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 13, xlRight);
- str.Format(_T("Z"));
- pExcel->WriteData(iRow + 1, 14, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 14, xlRight);
- str.Format(_T("终点"));
- pExcel->WriteData(iRow, 15, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 15, xlCenter);
- pExcel->MergeCells(iRow, 15, iRow, 17);
- str.Format(_T("X"));
- pExcel->WriteData(iRow + 1, 15, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 15, xlRight);
- str.Format(_T("Y"));
- pExcel->WriteData(iRow + 1, 16, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 16, xlRight);
- str.Format(_T("Z"));
- pExcel->WriteData(iRow + 1, 17, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow + 1, 17, xlRight);
- // LINE数据访问入口
- PostureDataAngleManager *pAngleManager = GetDocument()->GetPostureDataAngleManager();
- ASSERT(pAngleManager != NULL);
- iRow++;
- int iIndex = 0;
- CppSQLite3Query q = pAngleManager->Query(dwTaskId);
- while (!q.eof()) {
- iRow += 1;
- iIndex += 1;
- // 序号
- str.Format("%d", iIndex);
- pExcel->WriteData(iRow, 1, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 1, xlCenter);
- // 名称
- str.Format("%s", q.getStringField("equip_place"));
- pExcel->WriteData(iRow, 2, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 2, xlCenter);
- // 偏移量 - X
- str.Format("%.3f'", q.getFloatField("angle_a_x"));
- pExcel->WriteData(iRow, 3, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 3, xlRight);
- // 偏移量 - Y
- str.Format("%.3f'", q.getFloatField("angle_a_y"));
- pExcel->WriteData(iRow, 4, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 4, xlRight);
- // 偏移量 - Z
- str.Format("%.3f'", q.getFloatField("angle_a_z"));
- pExcel->WriteData(iRow, 5, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 5, xlRight);
- // 调校量 - X
- str.Format("%.3f'", q.getFloatField("angle_e_x"));
- pExcel->WriteData(iRow, 6, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 6, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 6, _T("0.00"));
- // 调校量 - Y
- str.Format("%.3f'", q.getFloatField("angle_e_y"));
- pExcel->WriteData(iRow, 7, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 7, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 7, _T("0.00"));
- // 调校量 - Z
- str.Format("%.3f'", q.getFloatField("angle_e_z"));
- pExcel->WriteData(iRow, 8, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 8, xlRight);
- DOUBLE x1 = q.getFloatField("line_start_x");
- DOUBLE y1 = q.getFloatField("line_start_y");
- DOUBLE z1 = q.getFloatField("line_start_z");
- DOUBLE x2 = q.getFloatField("line_end_x");
- DOUBLE y2 = q.getFloatField("line_end_y");
- DOUBLE z2 = q.getFloatField("line_end_z");
- DOUBLE vx1 = x2 - x1;
- DOUBLE vy1 = y2 - y1;
- DOUBLE vz1 = z2 - z1;
- // 向量 - X
- str.Format("%.3f", vx1);
- pExcel->WriteData(iRow, 9, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 9, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 9, "0.000");
- // 向量 - Y
- str.Format("%.3f", vy1);
- pExcel->WriteData(iRow, 10, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 10, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 101, "0.000");
- // 向量 - Z
- str.Format("%.3f", vz1);
- pExcel->WriteData(iRow, 11, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 11, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 11, "0.000");
- // 起点 - X
- str.Format("%.3f", x1);
- pExcel->WriteData(iRow, 12, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 12, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 12, "0.000");
- // 起点 - Y
- str.Format("%.3f", y1);
- pExcel->WriteData(iRow, 13, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 13, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 13, "0.000");
- // 起点 - Z
- str.Format("%.3f", z1);
- pExcel->WriteData(iRow, 14, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 14, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 14, "0.000");
- // 终点 - X
- str.Format("%.3f", x2);
- pExcel->WriteData(iRow, 15, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 15, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 15, "0.000");
- // 终点 - Y
- str.Format("%.3f", y2);
- pExcel->WriteData(iRow, 16, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 16, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 16, "0.000");
- // 终点 - Z
- str.Format("%.3f" ,z2);
- pExcel->WriteData(iRow, 17, (LPCTSTR)str);
- pExcel->SetHorizontalAlignment(iRow, 17, xlRight);
- pExcel->SetNumberFormatLocal(iRow, 17, "0.000");
- q.nextRow();
- }
- q.finalize();
- pExcel->SetBorders(iStartRow + 2, 1, iRow, 17, true, true, true, true, true, true, xlThin, xlThin, xlThin, xlThin, xlThin, xlThin);
- return iRow;
- }
- void DynamicReport::OnSize(UINT nType, int cx, int cy)
- {
- CDialogEx::OnSize(nType, cx, cy);
-
- }
|