当前位置: 代码迷 >> SQL >> 依据SQL结果集构建动态二维列表展示在excel中
  详细解决方案

依据SQL结果集构建动态二维列表展示在excel中

热度:104   发布时间:2016-05-05 12:58:02.0
根据SQL结果集构建动态二维列表展示在excel中

转自:http://lhxctc.iteye.com/blog/544303

根据SQL结果集构建动态二维列表展示在excel中


代码如下:?
Java代码??收藏代码
  1. import?java.io.FileOutputStream;??
  2. import?java.sql.Connection;??
  3. import?java.sql.DriverManager;??
  4. import?java.sql.PreparedStatement;??
  5. import?java.sql.ResultSet;??
  6. import?java.util.ArrayList;??
  7. import?java.util.HashMap;??
  8. import?java.util.Iterator;??
  9. import?java.util.List;??
  10. import?java.util.Map;??
  11. ??
  12. import?org.apache.poi.hssf.usermodel.HSSFCell;??
  13. import?org.apache.poi.hssf.usermodel.HSSFCellStyle;??
  14. import?org.apache.poi.hssf.usermodel.HSSFFont;??
  15. import?org.apache.poi.hssf.usermodel.HSSFRichTextString;??
  16. import?org.apache.poi.hssf.usermodel.HSSFRow;??
  17. import?org.apache.poi.hssf.usermodel.HSSFSheet;??
  18. import?org.apache.poi.hssf.usermodel.HSSFWorkbook;??
  19. import?org.apache.poi.hssf.util.HSSFColor;??
  20. /**?
  21. ?*??
  22. ?*??
  23. ?*?主要是将一些数据组织成二维表以便汇总?
  24. ?*??
  25. ?*?如:?
  26. ?*??
  27. ?*??????????战略1?战略2?战略3?
  28. ?*??
  29. ?*?项目1??????20??????20??????30?
  30. ?*?项目2??????30??????15??????40?
  31. ?*?...?
  32. ?*??
  33. ?*/??
  34. public?class?XZou?{??
  35. ??
  36. ????static?Connection?con?=?null;??
  37. ??
  38. ????static?{??
  39. ??
  40. ????????try?{??
  41. ????????????Class.forName("com.mysql.jdbc.Driver");??
  42. ??
  43. ????????????con?=?DriverManager??
  44. ????????????????????.getConnection(??
  45. ????????????????????????????"jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8",??
  46. ????????????????????????????"root",?"root");??
  47. ??????????????
  48. ????????????PreparedStatement?pst?=?con.prepareStatement("drop?table?if?exists?project;");??
  49. ??????????????
  50. ????????????pst.execute();??
  51. ??????????????
  52. ????????????pst?=?con.prepareStatement("create?table?project?(pro?varchar(20)?not?null?comment?'项目名称',sta?varchar(20)?not?null?comment?'战略名称',mark?float?comment?'值');");??
  53. ??????????????
  54. ????????????pst.execute();??
  55. ??????????????
  56. ????????????pst?=??con.prepareStatement("insert?into?project?(pro,sta,mark)?values?(?,?,?)");??
  57. ??????????????
  58. ????????????///////////////////////////////////////////////??
  59. ????????????pst.setString(1,?"项目1");?pst.setString(2,?"战略1");?pst.setFloat(3,?30.0f);??
  60. ????????????pst.addBatch();??
  61. ????????????pst.setString(1,?"项目1");?pst.setString(2,?"战略2");?pst.setFloat(3,?40.0f);??
  62. ????????????pst.addBatch();??
  63. ????????????pst.setString(1,?"项目1");?pst.setString(2,?"战略3");?pst.setFloat(3,?50.0f);??
  64. ????????????pst.addBatch();??
  65. ????????????pst.setString(1,?"项目2");?pst.setString(2,?"战略1");?pst.setFloat(3,?40.0f);??
  66. ????????????pst.addBatch();??
  67. ????????????pst.setString(1,?"项目2");?pst.setString(2,?"战略2");?pst.setFloat(3,?50.0f);??
  68. ????????????pst.addBatch();??
  69. ????????????pst.setString(1,?"项目2");?pst.setString(2,?"战略3");?pst.setFloat(3,?60.0f);??
  70. ????????????pst.addBatch();??
  71. ????????????pst.setString(1,?"项目2");?pst.setString(2,?"战略4");?pst.setFloat(3,?40.0f);??
  72. ????????????pst.addBatch();??
  73. ????????????pst.setString(1,?"项目3");?pst.setString(2,?"战略1");?pst.setFloat(3,?50.0f);??
  74. ????????????pst.addBatch();??
  75. ????????????pst.setString(1,?"项目3");?pst.setString(2,?"战略2");?pst.setFloat(3,?40.0f);??
  76. ????????????pst.addBatch();??
  77. ????????????pst.setString(1,?"项目3");?pst.setString(2,?"战略4");?pst.setFloat(3,?30.0f);??
  78. ????????????pst.addBatch();??
  79. ????????????pst.setString(1,?"项目4");?pst.setString(2,?"战略1");?pst.setFloat(3,?50.0f);??
  80. ????????????pst.addBatch();??
  81. ????????????pst.setString(1,?"项目4");?pst.setString(2,?"战略2");?pst.setFloat(3,?20.50f);??
  82. ????????????pst.addBatch();??
  83. ????????????pst.setString(1,?"项目4");?pst.setString(2,?"战略3");?pst.setFloat(3,?30.0f);??
  84. ????????????pst.addBatch();??
  85. ????????????pst.setString(1,?"项目4");?pst.setString(2,?"战略4");?pst.setFloat(3,?90.0f);??
  86. ????????????pst.addBatch();??
  87. ????????????pst.setString(1,?"项目5");?pst.setString(2,?"战略1");?pst.setFloat(3,?40.0f);??
  88. ????????????pst.addBatch();??
  89. ????????????pst.setString(1,?"项目5");?pst.setString(2,?"战略3");?pst.setFloat(3,?30.0f);??
  90. ????????????pst.addBatch();??
  91. ????????????pst.setString(1,?"项目5");?pst.setString(2,?"战略4");?pst.setFloat(3,?30.0f);??
  92. ????????????pst.addBatch();??
  93. ??????????????
  94. ??????????????
  95. ????????????pst.executeBatch();??
  96. ??
  97. ????????}?catch?(Exception?ex)?{??
  98. ????????????throw?new?ExceptionInInitializerError(ex);??
  99. ????????}??
  100. ????}??
  101. ??
  102. ????public?static?void?main(String[]?args)?throws?Exception?{??
  103. ??
  104. ????????int?startRow?=?8,?startCell?=?6;??
  105. ??????????
  106. ????????List<X>?xList?=?new?ArrayList<X>();??
  107. ??????????
  108. ????????PreparedStatement?pst?=?con.prepareStatement("select?pro?from?project?group?by?pro");??
  109. ??????????
  110. ????????ResultSet?rs?=?pst.executeQuery();??
  111. ??????????
  112. ????????while(rs.next()){??
  113. ??????????????
  114. ????????????xList.add(new?X(rs.getString(1)));??
  115. ??????????????
  116. ????????}??
  117. ??????????
  118. ????????Map<String,?Integer>?yMap?=?new?HashMap<String,?Integer>();??
  119. ??????????
  120. ??????????
  121. ??????????
  122. ????????pst?=?con.prepareStatement("select?sta?from?project?group?by?sta");??
  123. ??????????
  124. ????????rs?=?pst.executeQuery();??
  125. ??????????
  126. ????????int?tempStartCell?=?startCell;??
  127. ??????????
  128. ????????while(rs.next()){??
  129. ??????????????
  130. ????????????yMap.put(rs.getString(1),?++tempStartCell);??
  131. ??????????????
  132. ????????}??
  133. ??????????
  134. ??????????
  135. ??
  136. ????????pst?=?con.prepareStatement("select?pro,sta,mark?from?project?group?by?pro,sta");??
  137. ??????????
  138. ????????rs?=?pst.executeQuery();??
  139. ??????????
  140. ????????while(rs.next()){??
  141. ??????????????
  142. ??????????????
  143. ????????????for(X?x:?xList){??
  144. ??????????????????
  145. ????????????????if(x.getName().equals(rs.getString(1))){??
  146. ??????????????????????
  147. ????????????????????x.getYList().add(new?Y(rs.getString(2),rs.getFloat(3)));??
  148. ????????????????}??
  149. ??????????????????
  150. ????????????}??
  151. ??????????????
  152. ????????}??
  153. ??????????????
  154. ????????rs.close();??
  155. ??????????
  156. ????????pst.close();??
  157. ??????????
  158. ????????////////////////////////////////////////////////////////////////////??
  159. ??????????
  160. ????????HSSFWorkbook?wb?=?new?HSSFWorkbook();??
  161. ??????????????
  162. ????????HSSFSheet?sheet?=?wb.createSheet("测试");??
  163. ??????????
  164. ????????HSSFCellStyle?style?=?wb.createCellStyle();??
  165. ??????????
  166. ????????HSSFFont?font?=?wb.createFont();??
  167. ??????????
  168. ????????font.setColor(HSSFColor.RED.index);??
  169. ??????????
  170. ????????style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中现实??
  171. ??
  172. ????????style.setFont(font);//设置颜色??
  173. ??????????
  174. ????????HSSFRow?xRow?=?sheet.createRow(startRow?-?1);//确立X,所有列??
  175. ??????????
  176. ????????for(Iterator<Map.Entry<String,?Integer>>?it?=?yMap.entrySet().iterator();?it.hasNext();?){??
  177. ??????????????
  178. ????????????Map.Entry<String,?Integer>?map?=?it.next();??
  179. ??????????????
  180. ????????????HSSFCell?cell?=?xRow.createCell(map.getValue());??
  181. ??????????????
  182. ????????????cell.setCellStyle(style);??
  183. ??
  184. ????????????cell.setCellValue(new?HSSFRichTextString(map.getKey()));??
  185. ??????????????
  186. ????????}??
  187. ??????????
  188. ????????for(int?i?=?0;?i<xList.size();?i++){//确立Y,行??
  189. ??????????????
  190. ????????????X?x?=?xList.get(i);??
  191. ??????????????
  192. ????????????HSSFRow?row?=?sheet.createRow(startRow?+?i);//创建行??
  193. ??????????????
  194. ????????????HSSFCell?cell?=?row.createCell(startCell);??
  195. ??????????????
  196. ????????????cell.setCellStyle(style);??
  197. ??????????????
  198. ????????????cell.setCellValue(new?HSSFRichTextString(x.getName()));??
  199. ??????????????
  200. ????????????for(int?j?=?0;?j<x.getYList().size();?j++){??
  201. ??????????????????
  202. ????????????????Y?y?=?x.getYList().get(j);??
  203. ??????????????????
  204. ????????????????cell?=?row.createCell(yMap.get(y.getName()));??
  205. ??????????????????
  206. ????????????????cell.setCellStyle(style);??
  207. ??????????????????
  208. ????????????????cell.setCellValue(y.getValue());??
  209. ??????????????????
  210. ????????????}??
  211. ??????????????
  212. ??????????????
  213. ????????}??
  214. ??
  215. ????????wb.write(new?FileOutputStream("c:/wd.xls"));//写一个excel文件??
  216. ??????????
  217. ??????????
  218. ??????????
  219. ??????????
  220. ????}??
  221. ??
  222. }??
  223. ??
  224. /**?
  225. ?*?X?项目?
  226. ?*/??
  227. class?X{??
  228. ??????
  229. ????private?String?name;//项目名称??
  230. ??????
  231. ????private?List<Y>?yList?=?new?ArrayList<Y>();//项目对应的所有的战略集合??
  232. ??????
  233. ????public?X(){??
  234. ??????????
  235. ????}??
  236. ????public?X(String?name){??
  237. ????????this.name?=?name;??
  238. ????}??
  239. ??
  240. ????public?String?getName()?{??
  241. ????????return?name;??
  242. ????}??
  243. ??
  244. ????public?void?setName(String?name)?{??
  245. ????????this.name?=?name;??
  246. ????}??
  247. ??
  248. ????public?List<Y>?getYList()?{??
  249. ????????return?yList;??
  250. ????}??
  251. ??
  252. ????public?void?setYList(List<Y>?list)?{??
  253. ????????yList?=?list;??
  254. ????}??
  255. ??????
  256. ??????
  257. ??????
  258. ??????
  259. }??
  260. ??
  261. /**?
  262. ?*?战略?
  263. ?*/??
  264. class?Y{??
  265. ??????
  266. ????private?String?name;//战略名称??
  267. ??????
  268. ????private?float?value;//项目名称关联战略名称对应的mark值??
  269. ??????
  270. ????public?Y(String?name,float?value){??
  271. ??????????
  272. ????????this.name?=?name;??
  273. ??????????
  274. ????????this.value?=?value;??
  275. ??????????
  276. ????}??
  277. ??
  278. ????public?String?getName()?{??
  279. ????????return?name;??
  280. ????}??
  281. ??
  282. ????public?void?setName(String?name)?{??
  283. ????????this.name?=?name;??
  284. ????}??
  285. ??
  286. ????public?float?getValue()?{??
  287. ????????return?value;??
  288. ????}??
  289. ??
  290. ????public?void?setValue(float?value)?{??
  291. ????????this.value?=?value;??
  292. ????}??
  293. ??????
  294. ??????
  295. ??????
  296. }?
  相关解决方案