欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Excel之POI-POI之IndexedColors中所有颜色索引 (转载) 博客分类: POI excelpoi 

程序员文章站 2024-03-21 08:19:28
...

 

颜色参考:

 

 

 

olor org.apache.poi.hssf.util.HSSFColor$GREY_80_PERCENT@1aadbf7
color org.apache.poi.hssf.util.HSSFColor$INDIGO@4f4458
color org.apache.poi.hssf.util.HSSFColor$PLUM@100c56
color org.apache.poi.hssf.util.HSSFColor$BROWN@19a1fae
color org.apache.poi.hssf.util.HSSFColor$OLIVE_GREEN@1960c9e
color org.apache.poi.hssf.util.HSSFColor$DARK_GREEN@168f39
color org.apache.poi.hssf.util.HSSFColor$SEA_GREEN@11525cd
color org.apache.poi.hssf.util.HSSFColor$DARK_TEAL@164e67f
color org.apache.poi.hssf.util.HSSFColor$GREY_40_PERCENT@158cfda
color org.apache.poi.hssf.util.HSSFColor$BLUE_GREY@1b613c0
color org.apache.poi.hssf.util.HSSFColor$ORANGE@cae1b3
color org.apache.poi.hssf.util.HSSFColor$LIGHT_ORANGE@1a7e798
color org.apache.poi.hssf.util.HSSFColor$GOLD@55d1ef
color org.apache.poi.hssf.util.HSSFColor$LIME@49b9ad
color org.apache.poi.hssf.util.HSSFColor$AQUA@3d0f0e
color org.apache.poi.hssf.util.HSSFColor$LIGHT_BLUE@a7624e
color org.apache.poi.hssf.util.HSSFColor$TAN@1271218
color org.apache.poi.hssf.util.HSSFColor$LAVENDER@150b2d
color org.apache.poi.hssf.util.HSSFColor$ROSE@190c9dc
color org.apache.poi.hssf.util.HSSFColor$PALE_BLUE@b4bc8e
color org.apache.poi.hssf.util.HSSFColor$LIGHT_YELLOW@1c74456
color org.apache.poi.hssf.util.HSSFColor$LIGHT_GREEN@15783a2
color org.apache.poi.hssf.util.HSSFColor$LIGHT_TURQUOISE@830993
color org.apache.poi.hssf.util.HSSFColor$SKY_BLUE@e99642
color org.apache.poi.hssf.util.HSSFColor$BLUE@187f194
color org.apache.poi.hssf.util.HSSFColor$TEAL@55f9f
color org.apache.poi.hssf.util.HSSFColor$DARK_RED@c8e08f
color org.apache.poi.hssf.util.HSSFColor$VIOLET@edd19
color org.apache.poi.hssf.util.HSSFColor$TURQUOISE@1d5c7a1
color org.apache.poi.hssf.util.HSSFColor$YELLOW@252119
color org.apache.poi.hssf.util.HSSFColor$PINK@19ff062
color org.apache.poi.hssf.util.HSSFColor$DARK_BLUE@15eb4d0
color org.apache.poi.hssf.util.HSSFColor$LIGHT_CORNFLOWER_BLUE@b0e84b
color org.apache.poi.hssf.util.HSSFColor$ROYAL_BLUE@62a19d
color org.apache.poi.hssf.util.HSSFColor$CORAL@16075b3
color org.apache.poi.hssf.util.HSSFColor$ORCHID@1cf46c2
color org.apache.poi.hssf.util.HSSFColor$LIGHT_TURQUOISE@12e8a41
color org.apache.poi.hssf.util.HSSFColor$LEMON_CHIFFON@76ec7a
color org.apache.poi.hssf.util.HSSFColor$PLUM@19f7952
color org.apache.poi.hssf.util.HSSFColor$CORNFLOWER_BLUE@d60cdd
color org.apache.poi.hssf.util.HSSFColor$GREY_50_PERCENT@e6bc11
color org.apache.poi.hssf.util.HSSFColor$GREY_25_PERCENT@452267
color org.apache.poi.hssf.util.HSSFColor$TEAL@d5b614
color org.apache.poi.hssf.util.HSSFColor$VIOLET@a4e3ae
color org.apache.poi.hssf.util.HSSFColor$DARK_YELLOW@15fd4a3
color org.apache.poi.hssf.util.HSSFColor$DARK_BLUE@8137c9
color org.apache.poi.hssf.util.HSSFColor$GREEN@1757596
color org.apache.poi.hssf.util.HSSFColor$DARK_RED@7ad4d5
color org.apache.poi.hssf.util.HSSFColor$TURQUOISE@2aee3f
color org.apache.poi.hssf.util.HSSFColor$PINK@7f788b
color org.apache.poi.hssf.util.HSSFColor$YELLOW@c311d5
color org.apache.poi.hssf.util.HSSFColor$BLUE@c7e580
color org.apache.poi.hssf.util.HSSFColor$BRIGHT_GREEN@1ac55ac
color org.apache.poi.hssf.util.HSSFColor$RED@12cc460
color org.apache.poi.hssf.util.HSSFColor$WHITE@10ad7e
color org.apache.poi.hssf.util.HSSFColor$BLACK@ee336f

 

java操作Excel最常用的开源组件有poi与jxl。jxl是韩国人开发的,发行较早,但是更新的很慢,目前似乎还不支持excel2007。poi是apache下的一个子项目,poi应该是处理ms的office系列文档最好的组件了。poi3.7版本已经开始支持excel2007了。但是由于excel2007底层的实现似乎变成xml与excel2003底层存储发生了本质的变化,因此poi解析excel的类就存在差异了。
现在简单的介绍下poi常用的接口。
经常用的类一般都在org.apache.poi.hssf.usermodel(excel2003)或org.apache.poi.xssf.usermodel
(excel2007)。
工作薄: WorkBook是操作Excel的入口,HSSFWorkbook, XSSFWorkbook实现了该接口。
页:Sheet表示工作薄的分页。HSSFSheet, XSSFChartSheet, XSSFDialogsheet, XSSFSheet实现了该接口。
Row:表示页中的一行。HSSFRow, XSSFRow实现了该接口。
Cell:行中的一个单元格。HSSFCell, XSSFCell实现了该接口

下面是个人写的一个通用类 使用的是POI3.7

Java代码 
  1. package com.xyj.com.tool.util;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.OutputStream;
  8. import java.util.Calendar;
  9. import java.util.HashMap;
  10. import java.util.Map;
  11. import org.apache.commons.io.IOUtils;
  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.HSSFPalette;
  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. import org.apache.poi.ss.extractor.ExcelExtractor;
  21. import org.apache.poi.ss.usermodel.Cell;
  22. import org.apache.poi.ss.usermodel.CellStyle;
  23. import org.apache.poi.ss.usermodel.ClientAnchor;
  24. import org.apache.poi.ss.usermodel.CreationHelper;
  25. import org.apache.poi.ss.usermodel.DateUtil;
  26. import org.apache.poi.ss.usermodel.Drawing;
  27. import org.apache.poi.ss.usermodel.Font;
  28. import org.apache.poi.ss.usermodel.Footer;
  29. import org.apache.poi.ss.usermodel.IndexedColors;
  30. import org.apache.poi.ss.usermodel.Picture;
  31. import org.apache.poi.ss.usermodel.Row;
  32. import org.apache.poi.ss.usermodel.Sheet;
  33. import org.apache.poi.ss.usermodel.Workbook;
  34. import org.apache.poi.ss.usermodel.WorkbookFactory;
  35. import org.apache.poi.ss.util.CellRangeAddress;
  36. import org.apache.poi.ss.util.CellReference;
  37. import org.apache.poi.xssf.extractor.XSSFExcelExtractor;
  38. import org.apache.poi.xssf.usermodel.XSSFCellStyle;
  39. import org.apache.poi.xssf.usermodel.XSSFColor;
  40. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  41. /**
  42. * @className:POIExcelUtil.java
  43. * @classDescription:POI操作类
  44. * @author:xiayingjie
  45. * @createTime:2010-10-29
  46. */
  47. public class POIExcelUtil {
  48. // ------------------------写Excel-----------------------------------
  49. /**
  50. * 创建workBook对象 xlsx(2007以上版本)
  51. *
  52. * @return
  53. */
  54. public static Workbook createWorkbook() {
  55. return createWorkbook(true);
  56. }
  57. /**
  58. * 创建WorkBook对象
  59. *
  60. * @param flag
  61. * true:xlsx(1997-2007) false:xls(2007以上)
  62. * @return
  63. */
  64. public static Workbook createWorkbook(boolean flag) {
  65. Workbook wb;
  66. if (flag) {
  67. wb = new XSSFWorkbook();
  68. } else {
  69. wb = new HSSFWorkbook();
  70. }
  71. return wb;
  72. }
  73. /**
  74. * 添加图片
  75. *
  76. * @param wb
  77. * workBook对象
  78. * @param sheet
  79. * sheet对象
  80. * @param picFileName
  81. * 图片文件名称(全路径)
  82. * @param picType
  83. * 图片类型
  84. * @param row
  85. * 图片所在的行
  86. * @param col
  87. * 图片所在的列
  88. */
  89. public static void addPicture(Workbook wb, Sheet sheet, String picFileName,
  90. int picType, int row, int col) {
  91. InputStream is = null;
  92. try {
  93. // 读取图片
  94. is = new FileInputStream(picFileName);
  95. byte[] bytes = IOUtils.toByteArray(is);
  96. int pictureIdx = wb.addPicture(bytes, picType);
  97. is.close();
  98. // 写图片
  99. CreationHelper helper = wb.getCreationHelper();
  100. Drawing drawing = sheet.createDrawingPatriarch();
  101. ClientAnchor anchor = helper.createClientAnchor();
  102. // 设置图片的位置
  103. anchor.setCol1(col);
  104. anchor.setRow1(row);
  105. Picture pict = drawing.createPicture(anchor, pictureIdx);
  106. pict.resize();
  107. } catch (Exception e) {
  108. try {
  109. if (is != null) {
  110. is.close();
  111. }
  112. } catch (IOException e1) {
  113. e1.printStackTrace();
  114. }
  115. e.printStackTrace();
  116. }
  117. }
  118. /**
  119. * 创建Cell 默认为水平和垂直方式都是居中
  120. *
  121. * @param style
  122. * CellStyle对象
  123. * @param row
  124. * Row对象
  125. * @param column
  126. * 单元格所在的列
  127. * @return
  128. */
  129. public static Cell createCell(CellStyle style, Row row, short column) {
  130. return createCell(style, row, column,
  131. XSSFCellStyle.ALIGN_CENTER, XSSFCellStyle.ALIGN_CENTER);
  132. }
  133. /**
  134. * 创建Cell并设置水平和垂直方式
  135. *
  136. * @param style
  137. * CellStyle对象
  138. * @param row
  139. * Row对象
  140. * @param column
  141. * 单元格所在的列
  142. * @param halign
  143. * 水平对齐方式:XSSFCellStyle.VERTICAL_CENTER.
  144. * @param valign
  145. * 垂直对齐方式:XSSFCellStyle.ALIGN_LEFT
  146. */
  147. public static Cell createCell(CellStyle style, Row row,
  148. short column, short halign, short valign) {
  149. Cell cell = row.createCell(column);
  150. setAlign(style,halign,valign);
  151. cell.setCellStyle(style);
  152. return cell;
  153. }
  154. /**
  155. * 合并单元格
  156. * @param sheet
  157. * @param firstRow 开始行
  158. * @param lastRow 最后行
  159. * @param firstCol 开始列
  160. * @param lastCol 最后列
  161. */
  162. public static void mergeCell(Sheet sheet,int firstRow,int lastRow,int firstCol,int lastCol){
  163. sheet.addMergedRegion(new CellRangeAddress(firstRow,lastRow,firstCol,lastCol));
  164. }
  165. //---------------------------------设置样式-----------------------
  166. /**
  167. * 设置单元格对齐方式
  168. * @param style
  169. * @param halign
  170. * @param valign
  171. * @return
  172. */
  173. public static CellStyle setAlign(CellStyle style,short halign, short valign) {
  174. style.setAlignment(halign);
  175. style.setVerticalAlignment(valign);
  176. return style;
  177. }
  178. /**
  179. * 设置单元格边框(四个方向的颜色一样)
  180. * @param style style对象
  181. * @param borderStyle 边框类型 :dished-虚线 thick-加粗 double-双重 dotted-有点的 CellStyle.BORDER_THICK
  182. * @param borderColor 颜色 IndexedColors.GREEN.getIndex()
  183. * @return
  184. */
  185. public static CellStyle setBorder(CellStyle style,short borderStyle,short borderColor){
  186. //设置底部格式(样式+颜色)
  187. style.setBorderBottom(borderStyle);
  188. style.setBottomBorderColor(borderColor);
  189. //设置左边格式
  190. style.setBorderLeft(borderStyle);
  191. style.setLeftBorderColor(borderColor);
  192. //设置右边格式
  193. style.setBorderRight(borderStyle);
  194. style.setRightBorderColor(borderColor);
  195. //设置顶部格式
  196. style.setBorderTop(borderStyle);
  197. style.setTopBorderColor(borderColor);
  198. return style;
  199. }
  200. /**
  201. * 自定义颜色(xssf)
  202. * @param style xssfStyle
  203. * @param red RGB red (0-255)
  204. * @param green RGB green (0-255)
  205. * @param blue RGB blue (0-255)
  206. */
  207. public static CellStyle setBackColorByCustom(XSSFCellStyle style,int red ,int green,int blue){
  208. //设置前端颜色
  209. style.setFillForegroundColor(new XSSFColor(new java.awt.Color(red, green, blue)));
  210. //设置填充模式
  211. style.setFillPattern(CellStyle.SOLID_FOREGROUND);
  212. return style;
  213. }
  214. /**
  215. * 设置前景颜色
  216. * @param style style对象
  217. * @param color :IndexedColors.YELLOW.getIndex()
  218. * @return
  219. */
  220. public static CellStyle setBackColor(CellStyle style,short color){
  221. //设置前端颜色
  222. style.setFillForegroundColor(color);
  223. //设置填充模式
  224. style.setFillPattern(CellStyle.SOLID_FOREGROUND);
  225. return style;
  226. }
  227. /**
  228. * 设置背景颜色
  229. * @param style style对象
  230. * @param color :IndexedColors.YELLOW.getIndex()
  231. * @param fillPattern :CellStyle.SPARSE_DOTS
  232. * @return
  233. */
  234. public static CellStyle setBackColor(CellStyle style,short backColor,short fillPattern){
  235. //设置背景颜色
  236. style.setFillBackgroundColor(backColor);
  237. //设置填充模式
  238. style.setFillPattern(fillPattern);
  239. return style;
  240. }
  241. /**
  242. *
  243. * 设置字体(简单的需求实现,如果复杂的字体,需要自己去实现)尽量重用
  244. * @param style style对象
  245. * @param fontSize 字体大小 shot(24)
  246. * @param color 字体颜色 IndexedColors.YELLOW.getIndex()
  247. * @param fontName 字体名称 "Courier New"
  248. * @param
  249. */
  250. public static CellStyle setFont(Font font, CellStyle style,short fontSize,short color,String fontName){
  251. font.setFontHeightInPoints(color);
  252. font.setFontName(fontName);
  253. //font.setItalic(true);// 斜体
  254. //font.setStrikeout(true);//加干扰线
  255. font.setColor(color);//设置颜色
  256. // Fonts are set into a style so create a new one to use.
  257. style.setFont(font);
  258. return style;
  259. }
  260. /**
  261. *
  262. * @param createHelper
  263. * createHelper对象
  264. * @param style
  265. * CellStyle对象
  266. * @param formartData
  267. * date:"m/d/yy h:mm"; int:"#,###.0000" ,"0.0"
  268. */
  269. public static CellStyle setDataFormat(CreationHelper createHelper, CellStyle style, String formartData) {
  270. style.setDataFormat(createHelper.createDataFormat().getFormat(
  271. formartData));
  272. return style;
  273. }
  274. /**
  275. * 将Workbook写入文件
  276. *
  277. * @param wb
  278. * workbook对象
  279. * @param fileName
  280. * 文件的全路径
  281. * @return
  282. */
  283. public static boolean createExcel(Workbook wb, String fileName) {
  284. boolean flag = true;
  285. FileOutputStream fileOut = null;
  286. try {
  287. fileOut = new FileOutputStream(fileName);
  288. wb.write(fileOut);
  289. fileOut.close();
  290. } catch (Exception e) {
  291. flag = false;
  292. if (fileOut != null) {
  293. try {
  294. fileOut.close();
  295. } catch (IOException e1) {
  296. // TODO Auto-generated catch block
  297. e1.printStackTrace();
  298. }
  299. }
  300. e.printStackTrace();
  301. }
  302. return flag;
  303. }
  304. //--------------------读取Excel-----------------------
  305. /**
  306. * 读取Excel
  307. * @param filePathName
  308. * @return
  309. */
  310. public static Workbook readExcel(String filePathName){
  311. InputStream inp = null;
  312. Workbook wb=null;
  313. try {
  314. inp = new FileInputStream(filePathName);
  315. wb = WorkbookFactory.create(inp);
  316. inp.close();
  317. } catch (Exception e) {
  318. try {
  319. if(null!=inp){
  320. inp.close();
  321. }
  322. } catch (IOException e1) {
  323. // TODO Auto-generated catch block
  324. e1.printStackTrace();
  325. }
  326. e.printStackTrace();
  327. }
  328. return wb;
  329. }
  330. /**
  331. * 读取Cell的值
  332. * @param sheet
  333. * @return
  334. */
  335. public static Map readCell(Sheet sheet){
  336. Map map=new HashMap();
  337. //遍历所有行
  338. for (Row row : sheet) {
  339. //便利所有列
  340. for (Cell cell : row) {
  341. //获取单元格的类型
  342. CellReference cellRef = new CellReference(row.getRowNum(), cell
  343. .getColumnIndex());
  344. // System.out.print(cellRef.formatAsString());
  345. String key=cellRef.formatAsString();
  346. // System.out.print(" - ");
  347. switch (cell.getCellType()) {
  348. //字符串
  349. case Cell.CELL_TYPE_STRING:
  350. map.put(key, cell.getRichStringCellValue()
  351. .getString());
  352. // System.out.println(cell.getRichStringCellValue()
  353. // .getString());
  354. break;
  355. //数字
  356. case Cell.CELL_TYPE_NUMERIC:
  357. if (DateUtil.isCellDateFormatted(cell)) {
  358. // System.out.println(cell.getDateCellValue());
  359. map.put(key, cell.getDateCellValue());
  360. } else {
  361. // System.out.println(cell.getNumericCellValue());
  362. map.put(key, cell.getNumericCellValue());
  363. }
  364. break;
  365. //boolean
  366. case Cell.CELL_TYPE_BOOLEAN:
  367. // System.out.println(cell.getBooleanCellValue());
  368. map.put(key, cell.getBooleanCellValue());
  369. break;
  370. //方程式
  371. case Cell.CELL_TYPE_FORMULA:
  372. // System.out.println(cell.getCellFormula());
  373. map.put(key, cell.getCellFormula());
  374. break;
  375. //空值
  376. default:
  377. System.out.println();
  378. map.put(key,"");
  379. }
  380. }
  381. }
  382. return map;
  383. }
  384. /**
  385. * @param args
  386. * @throws Exception
  387. */
  388. public static void main(String[] args) throws Exception {
  389. // 在需要换行的地方加上\n cell.setCellValue("Use \n with word wrap on to create a new line");
  390. // 设置行高 row.setHeightInPoints((2*sheet.getDefaultRowHeightInPoints()));
  391. // 设置列只适应宽度 sheet.autoSizeColumn((short)2);
  392. //
  393. // // -------------插入---------------------
  394. // Workbook wb = POIUtil.createWorkbook();
  395. // //创建Sheet
  396. // Sheet s = wb.createSheet();
  397. // s.autoSizeColumn(1);
  398. // s.autoSizeColumn(0);
  399. // s.autoSizeColumn(2);
  400. // //创建样式(真实项目中-所有样式都写在这里)
  401. // CellStyle style1=wb.createCellStyle();
  402. // CellStyle style2=wb.createCellStyle();
  403. // CellStyle style3=wb.createCellStyle();
  404. // //字体
  405. // //设置字体
  406. // Font font=wb.createFont();
  407. // CellStyle fontStyle =setFont(font,style3,(short)30,IndexedColors.RED.getIndex() , "Courier New");
  408. // //合并单元格
  409. // //mergeCell(s,2,2,1,2);
  410. // //创建行
  411. // Row row1 = s.createRow(0);
  412. // row1.setHeightInPoints((2*s.getDefaultRowHeightInPoints()));
  413. // //-----------数字-----------
  414. // Cell c1=createCell(style1, row1, (short) 0);
  415. // c1.setCellValue(3.138);
  416. // //设置边框
  417. // setBorder(style1,CellStyle.BORDER_THIN,IndexedColors.GREEN.getIndex());
  418. //
  419. //
  420. // //-------------日期----------------
  421. // Cell c2=createCell(style2, row1, (short) 1);
  422. // c2.setCellValue(Calendar.getInstance());
  423. // CreationHelper ch=wb.getCreationHelper();
  424. // setDataFormat(ch,style2,"m/d/yy h:mm");
  425. // setBackColor(style2,IndexedColors.YELLOW.getIndex());
  426. //
  427. //
  428. //
  429. // Cell c4=createCell(style2, row1, (short) 2);
  430. //
  431. // //----------------字符串------------------
  432. //
  433. // //Cell c3=createCell(style3, row1, (short) 2);
  434. // Cell c3=row1.createCell((short) 3);
  435. // c3.setCellValue("我和你dfgd、\nfged二个如果");
  436. // CellStyle cs=wb.createCellStyle();
  437. //
  438. // setBackColor(style3,IndexedColors.ORANGE.getIndex());
  439. //
  440. //
  441. // c3.setCellStyle(style3);
  442. //c3.setCellStyle(cs);
  443. //写入图片
  444. // POIUtil.addPicture(wb, s,"F://aa.gif", Workbook.PICTURE_TYPE_JPEG,5,6);
  445. // Footer footer = s.getFooter(); //页脚
  446. //
  447. // footer.setRight( "Page " + footer.getLeft() + " of " + footer.getRight());
  448. // s.shiftRows(5, 10,-5); //把第6-11行向上移动5行
  449. // s.setSelected(true); //选中sheet
  450. //
  451. //打印
  452. // PrintSetup ps = s.getPrintSetup();
  453. //
  454. // sheet.setAutobreaks(true);
  455. //
  456. // ps.setFitHeight((short)1);
  457. // ps.setFitWidth((short)1);
  458. // POIUtil.createExcel(wb, "F://text.xlsx");
  459. //=====================读================
  460. Workbook wb=readExcel("F://text.xlsx");
  461. Map<String,Object> map=readCell(wb.getSheetAt(0));
  462. for(String key:map.keySet()){
  463. System.out.println(key+"-"+map.get(key));
  464. }
  465. }
  466. }
相关标签: excel poi