控制网复测平面基准归算程序(包含控制网复测平面基准计算,平面控制网稳定性计算,水准测段高差稳定计算三个程序功能)
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

WDExport.py 7.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. import openpyxl
  2. import sqlite3
  3. import os
  4. from openpyxl.styles import Alignment
  5. def Arrange_Data1(list1):
  6. #最终return的
  7. list2 = []
  8. for data1 in list1:
  9. #点名
  10. #存每一行的数据
  11. resultlist = []
  12. pn = data1[0].decode('utf-8')
  13. resultlist.append(pn)
  14. resultlist.append(data1[1])
  15. resultlist.append(data1[2])
  16. resultlist.append(data1[3])
  17. resultlist.append(data1[4])
  18. resultlist.append(data1[5])
  19. resultlist.append(data1[6])
  20. resultlist.append(data1[7])
  21. resultlist.append(data1[8])
  22. resultlist.append(data1[9])
  23. resultlist.append(data1[10])
  24. resultlist.append(data1[11])
  25. #判定1
  26. an1 = data1[12].decode('utf-8')
  27. resultlist.append(an1)
  28. resultlist.append(data1[13])
  29. resultlist.append(data1[14])
  30. resultlist.append(data1[15])
  31. #判定2
  32. an2 = data1[16].decode('utf-8')
  33. resultlist.append(an2)
  34. #3个名字(首,上,新)
  35. name1 = data1[17].decode('utf-8')
  36. resultlist.append(name1)
  37. name2 = data1[18].decode('utf-8')
  38. resultlist.append(name2)
  39. name3 = data1[19].decode('utf-8')
  40. resultlist.append(name3)
  41. list2.append(resultlist)
  42. return list2
  43. def openpyxl_write(outpath,dbpath,filename):
  44. utf_en = filename.encode('utf-8')
  45. #新建对应的excel
  46. wb = openpyxl.Workbook()
  47. ws1 = wb.create_sheet('稳定性分析成果表')
  48. ws2 = wb.create_sheet('改算模型')
  49. ws3 = wb['Sheet']
  50. wb.remove(ws3)
  51. #ws1部分(成果表)
  52. #提取数据
  53. db1 = sqlite3.connect(dbpath)
  54. #获取游标
  55. cursor1 = db1.cursor()
  56. sqlstr1 = 'select PointName,First_X,First_Y,Last_X,Last_Y,Last_Wight,Result_X,Result_Y,New_Wight,New_FirstX,New_FirstY,New_FirstP,NFDis_Ass,New_LastX,New_LastY,New_LastP,NLDis_Ass,First_ResultName,Last_ResultName,New_ResultName from WD_Result_Point WHERE TableName = ?'
  57. cursor1.execute(sqlstr1,(utf_en,))
  58. #获取结果集
  59. result1 = cursor1.fetchall()
  60. #整理数据
  61. plist1 = Arrange_Data1(result1)
  62. ws1.column_dimensions['B'].width = 15
  63. ws1.column_dimensions['C'].width = 15
  64. ws1.column_dimensions['D'].width = 15
  65. ws1.column_dimensions['E'].width = 15
  66. ws1.column_dimensions['F'].width = 5
  67. ws1.column_dimensions['G'].width = 15
  68. ws1.column_dimensions['H'].width = 15
  69. ws1.column_dimensions['I'].width = 5
  70. ws1.column_dimensions['M'].width = 5
  71. ws1.column_dimensions['Q'].width = 5
  72. ws1.column_dimensions['J'].width = 8
  73. ws1.column_dimensions['K'].width = 8
  74. ws1.column_dimensions['L'].width = 8
  75. ws1.column_dimensions['N'].width = 8
  76. ws1.column_dimensions['O'].width = 8
  77. ws1.column_dimensions['P'].width = 8
  78. ws1.merge_cells(start_row=1, end_row=1,
  79. start_column=1, end_column=17)
  80. ws1.cell(1, 1).value = '稳定性分析成果表'
  81. ws_area = ws1["A1:Q2"]
  82. alignment_center = Alignment(horizontal='center', vertical='center')# 指定区域单元格居中
  83. for i in ws_area:
  84. for j in i:
  85. j.alignment = alignment_center
  86. alignment_right = Alignment(horizontal='right', vertical='center')
  87. ws1.merge_cells(start_row=2, end_row=3,
  88. start_column=1, end_column=1)
  89. ws1.cell(2, 1).value = '点号'
  90. ws1.merge_cells(start_row=2, end_row=2,
  91. start_column=2, end_column=3)
  92. ws1.cell(2, 2).value = plist1[0][17]
  93. ws1.merge_cells(start_row=2, end_row=2,
  94. start_column=4, end_column=6)
  95. ws1.cell(2, 4).value = plist1[0][18]
  96. ws1.merge_cells(start_row=2, end_row=2,
  97. start_column=7, end_column=9)
  98. ws1.cell(2, 7).value = plist1[0][19]
  99. ws1.merge_cells(start_row=2, end_row=2,
  100. start_column=10, end_column=12)
  101. ws1.cell(2, 10).value = '本期-首期(mm)'
  102. ws1.merge_cells(start_row=2, end_row=3,
  103. start_column=13, end_column=13)
  104. ws1.cell(2, 13).value = '变形判定'
  105. ws1.merge_cells(start_row=2, end_row=2,
  106. start_column=14, end_column=16)
  107. ws1.cell(2, 14).value = '本期-上期(mm)'
  108. ws1.merge_cells(start_row=2, end_row=3,
  109. start_column=17, end_column=17)
  110. ws1.cell(2, 17).value = '变形判定'
  111. ws1.cell(2, 13).alignment = Alignment(wrap_text=True)
  112. ws1.cell(2, 17).alignment = Alignment(wrap_text=True)
  113. ws1.cell(3, 2).value = 'X(m)'
  114. ws1.cell(3, 3).value = 'Y(m)'
  115. ws1.cell(3, 4).value = 'X(m)'
  116. ws1.cell(3, 5).value = 'Y(m)'
  117. ws1.cell(3, 6).value = '权'
  118. ws1.cell(3, 7).value = 'X(m)'
  119. ws1.cell(3, 8).value = 'Y(m)'
  120. ws1.cell(3, 9).value = '权'
  121. ws1.cell(3, 10).value = '△X'
  122. ws1.cell(3, 11).value = '△Y'
  123. ws1.cell(3, 12).value = '△XY'
  124. ws1.cell(3, 14).value = '△X'
  125. ws1.cell(3, 15).value = '△Y'
  126. ws1.cell(3, 16).value = '△XY'
  127. row1 = 4
  128. for data1 in plist1:
  129. ws1.cell(row1,1).value = data1[0]
  130. ws1.cell(row1,2).value = round(data1[1],4)
  131. ws1.cell(row1,3).value = round(data1[2],4)
  132. ws1.cell(row1,4).value = round(data1[3],4)
  133. ws1.cell(row1,5).value = round(data1[4],4)
  134. ws1.cell(row1,6).value = int(data1[5])
  135. ws1.cell(row1,7).value = round(data1[6],4)
  136. ws1.cell(row1,8).value = round(data1[7],4)
  137. ws1.cell(row1,9).value = int(data1[8])
  138. ws1.cell(row1,10).value = round(data1[9],1)
  139. ws1.cell(row1,11).value = round(data1[10],1)
  140. ws1.cell(row1,12).value = round(data1[11],1)
  141. if data1[12] == '稳定':
  142. ws1.cell(row1,13).value = ''
  143. else:
  144. ws1.cell(row1,13).value = data1[12]
  145. ws1.cell(row1,14).value = round(data1[13],1)
  146. ws1.cell(row1,15).value = round(data1[14],1)
  147. ws1.cell(row1,16).value = round(data1[15],1)
  148. if data1[16] == '稳定':
  149. ws1.cell(row1,17).value = ''
  150. else:
  151. ws1.cell(row1,17).value = data1[16]
  152. row1 = row1 + 1
  153. #ws2部分(公式)
  154. #提取数据
  155. sqlstr2 = 'select Last_ResultName,New_ResultName,Formula_X1,Formula_X2,Formula_X3,Formula_Y1,Formula_Y2,Formula_Y3 from WD_Result_Param WHERE TableName = ?'
  156. cursor1.execute(sqlstr2,(utf_en,))
  157. #获取结果集
  158. result3 = cursor1.fetchall()
  159. newname = result3[0][1].decode('utf-8')
  160. lastname = result3[0][0].decode('utf-8')
  161. ws2.column_dimensions['A'].width = 75
  162. ws_area = ws2["A1:A5"]
  163. alignment_center = Alignment(horizontal='left', vertical='center')# 指定区域单元格居中
  164. for i in ws_area:
  165. for j in i:
  166. j.alignment = alignment_center
  167. str1 = newname + '--' + lastname + '已知系统转换公式:'
  168. ws2.cell(1, 1).value = str1
  169. str2 = 'X=(' + str(round(result3[0][2],14)) + ')·x+(' + str(round(result3[0][3],14)) + ')·y+(' + str(round(result3[0][4],11)) + ')'
  170. ws2.cell(2, 1).value = str2
  171. str3 = 'Y=(' + str(round(result3[0][5],14)) + ')·x+(' + str(round(result3[0][6],14)) + ')·y+(' + str(round(result3[0][7],11)) + ')'
  172. ws2.cell(3, 1).value = str3
  173. str4 = '式中:x、y为' + newname
  174. ws2.cell(4, 1).value = str4
  175. str5 = ' X、Y为' + lastname + '已知系统的' + newname + '归算坐标'
  176. ws2.cell(5, 1).value = str5
  177. #保存
  178. wb.save(outpath)
  179. # # 主函数 写入excel文件
  180. # def main_function(outpath,dbpath,file_path):
  181. # dbpath = r"D:\4work_now\20240819GS\ControlNetwork\ControlNetwork\UI\SQL\DataBase.db"
  182. # outpath = r'D:\4work_now\20240819GS\JPG\WD成果表.xlsx'
  183. # file_path = r'D:\4work_now\20240819GS\test_wd.xls'
  184. # file_name = os.path.basename(file_path)
  185. # # outpath为包含输出excel名字的全路径
  186. # openpyxl_write(outpath,dbpath,file_name)
  187. dbpath = r"D:\4work_now\20240819GS\ControlNetwork\ControlNetwork\UI\SQL\DataBase.db"
  188. outpath = r'D:\4work_now\20240819GS\JPG\WD成果表.xlsx'
  189. file_path = r'D:\4work_now\20240819GS\test_wd.xls'
  190. file_name = os.path.basename(file_path)
  191. # outpath为包含输出excel名字的全路径
  192. openpyxl_write(outpath,dbpath,file_name)