`

ExcelUtil—(包括公式,合并单元格)

阅读更多

public class ExcelUtilStat {

 /**
  * 合併單元格
  *
  * @param rowFrom
  * @param cellFrom
  * @param rowTo
  * @param cellTo
  * @return
  */
 public static Region getRegion(int rowFrom, short cellFrom, int rowTo, short cellTo) {
  Region region = new Region(rowFrom, cellFrom, rowTo, cellTo);
  return region;
 }

 /**
  * 根據列所在索引位置取得字母
  *
  * @param cell
  * @return
  */
 public static String getCellWorld(int cell) {
  String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  int m = ((cell) / 26) - 1;
  char a = str.charAt(cell % 26);
  return "" + (m == -1 ? "" : str.charAt(m)) + a;
 }

 /**
  * 取得單元格函數 (如MAX,MIN,AVERAGE,STDEVP)等等
  *
  * @param cellFrom
  *            計算的開始列
  * @param cellTo
  *            計算的結束列
  * @param rowFrom
  *            第幾行開始
  * @param rowTo
  *            第幾行結束
  * @param function
  *            Excel函數
  * @return
  */
 public static String getXToY(int cellFrom, int cellTo, int rowFrom, int rowTo, String function) {
  String resultX = getCellWorld(cellFrom) + rowFrom;
  String resultY = getCellWorld(cellTo) + rowTo;
  String XToY = "";
  String x1 = resultX + ":" + resultY;
  String x2 = function + "(" + resultX + ":" + resultY + ")";
  XToY = function == null ? x1 : x2;
  return XToY;
 }

 /**
  * 取得rank公式
  *
  * @param x
  *            計算的列
  * @param y
  *            列所在的行
  * @param yFrom
  *            第幾行開始
  * @param yTo
  *            第幾行結束
  * @param function
  *            Excel函數
  * @return
  */
 public static String getRank(int x, int y, int yFrom, int yTo, String function) {
  String a = getCellWorld(x) + y;
  String b = getXToY(x, x, yFrom, yTo, null);
  return function + "(" + a + "," + b + "," + 0 + ")";
 }
 
 public static void main(String[] args) {
  System.out.println(getRank(6, 3, 3, 5, "RANK"));
 }

 /**
  * 取得Normsinv公式, 操作如(M5+NORMSINV(NORMDIST(E3,E6,E7,TRUE))*N5)
  *
  * @param xm
  *            全體平均值的列
  * @param xn
  *            全體標準差的列
  * @param xo
  *            委員列
  * @param yFrom
  *            第幾行
  * @param rowTotal
  *            數據總行數
  * @return
  */
 public static String getNormsinv(int xm, int xn, int xo, int yFrom, int rowTotal) {
  String m5 = getCellWorld(xm) + yFrom;
  String n5 = getCellWorld(xn) + yFrom;
  String e3 = getCellWorld(xo) + yFrom;
  String e6 = getCellWorld(xo) + (rowTotal + 3);
  String e7 = getCellWorld(xo) + (rowTotal + 4);
  return m5 + "+NORMSINV(NORMDIST(" + e3 + "," + e6 + "," + e7 + ",TRUE))*" + n5;
 }

 /**
  * 取得標準後名次差異(如:T3-J3)
  *
  * @param xFrom
  * @param xTo
  * @param y
  * @return
  */
 public static String getVariance(int xFrom, int xTo, int y) {
  String startStr = getCellWorld(xFrom) + y;
  String endStr = getCellWorld(xTo) + y;
  return endStr + "-" + startStr;
 }

 /**
  * 設置工作表各列寬度
  * @param sheet
  * @param width
  */
 @SuppressWarnings("deprecation")
 public static void setColumnWidth(HSSFSheet sheet, int[] width) {
  for (int i = 0; i < width.length; i++) {
   sheet.setColumnWidth((short) i, (short) (width[i] * 256));
  }
 }

 /**
  * 設置邊框
  *
  * @param wb
  * @return
  */
 public static HSSFCellStyle createBorder(HSSFWorkbook wb) {
  HSSFCellStyle hcs = wb.createCellStyle();
  hcs.setBorderLeft(HSSFCellStyle.BORDER_THIN);
  hcs.setBorderRight(HSSFCellStyle.BORDER_THIN);
  hcs.setBorderBottom(HSSFCellStyle.BORDER_THIN);
  hcs.setBorderTop(HSSFCellStyle.BORDER_THIN);
  hcs.setBottomBorderColor(HSSFColor.BLACK.index);
  hcs.setTopBorderColor(HSSFColor.BLACK.index);
  hcs.setLeftBorderColor(HSSFColor.BLACK.index);
  hcs.setRightBorderColor(HSSFColor.BLACK.index);
  hcs.setFont(getFont(wb, (short) 12, "新細明體"));
  return hcs;
 }

 /**
  * 設置基本單元格格式
  *
  * @param wb
  * @return
  */
 public static HSSFCellStyle createBasicHcs(HSSFWorkbook wb) {
  HSSFCellStyle normalStyle = createBorder(wb);
  normalStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  normalStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
  normalStyle.setWrapText(true);
  return normalStyle;
 }
 
 /**
  * 設置邊框
  *
  * @param wb
  * @return
  */
 public static HSSFCellStyle createBorder(HSSFCellStyle cellStyle) {
  cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
  cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
  cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
  cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
  cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);
  cellStyle.setTopBorderColor(HSSFColor.BLACK.index);
  cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);
  cellStyle.setRightBorderColor(HSSFColor.BLACK.index);
  return cellStyle;
 }
 
 
 
 

 /**
  * 設置單元格對齊方式及顏色
  *
  * @param wb
  * @param x
  *            水平
  * @param y
  *            垂直
  * @return
  */
 public static HSSFCellStyle createBasicHcs(HSSFWorkbook wb, short x, short y, short color) {
  HSSFCellStyle normalStyle = createBasicHcs(wb);
  normalStyle.setAlignment(x);
  normalStyle.setVerticalAlignment(y);
  normalStyle.setWrapText(true);
  normalStyle.setFillForegroundColor(color);
  normalStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
  return normalStyle;
 }

 /**
  * 設置單元格顏色
  *
  * @param wb
  * @return
  */
 public static HSSFCellStyle createHcs(HSSFWorkbook wb, short color) {
  HSSFCellStyle normalStyle = createBasicHcs(wb);
  normalStyle.setFillForegroundColor(color);
  normalStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
  return normalStyle;
 }

 /**
  * 设置字体
  *
  * @param wb
  * @param height
  * @param fontName
  * @return
  */
 public static HSSFFont getFont(HSSFWorkbook wb, short height, String fontName) {
  HSSFFont font = wb.createFont();
  font.setFontHeightInPoints(height);
  font.setFontName(fontName);
  return font;
 }

 /**
  * 設置單元格為小數點為兩位
  *
  * @param wb
  * @return
  */
 public static HSSFCellStyle createHcsForDataFormat(HSSFWorkbook wb) {
  DataFormat format = wb.createDataFormat();
  HSSFCellStyle cellStyle = createBorder(wb);
  cellStyle.setDataFormat(format.getFormat("#,##0.00"));
  return cellStyle;
 }

 /**
  * 設置單元格為小數點為兩位及設置顏色
  *
  * @param wb
  * @param color
  * @return
  */
 public static HSSFCellStyle createHcsForDataFormat(HSSFWorkbook wb, short color) {
  HSSFCellStyle cellStyle = createHcsForDataFormat(wb);
  cellStyle.setFillForegroundColor(color);
  cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
  return cellStyle;
 }

 

}

分享到:
评论

相关推荐

    easyuiPoi导出Excel工具类封装(支持合并单元格)

    EasyUIPoI是一款基于Apache POI的Java工具库,专门用于简化Excel的导出操作,尤其在处理模板和合并单元格方面提供了便利。这个库主要适用于那些需要在Web应用中生成Excel报告或导出数据的场景,比如数据分析、报表...

    Excel工具类ExcelUtil

    7. **合并单元格**:合并单元格以创建标题或复合单元格。 8. **图表处理**:生成或修改Excel中的图表,根据数据更新图表内容。 了解ExcelUtil的使用方法,可以帮助我们更高效地处理Excel数据,提高开发效率。同时,...

    ExcelUtil_excel导入_工具类_

    ExcelUtil可能包含了设置单元格样式的功能,如设置字体、颜色、边框、对齐方式、数字格式等。这些功能可以增强Excel文件的可读性和美观性。 6. **多sheet支持** 对于包含多个工作表的Excel文件,ExcelUtil可能...

    excelUtil导入导出

    在实际应用中,"GJP-Example"这个文件可能是ExcelUtil的一个示例项目,包含了使用ExcelUtil进行导入导出操作的具体代码和测试案例。通过查看和运行这些例子,开发者可以更好地理解和学习如何在自己的项目中使用...

    ExcelUtil

    1. **读取Excel数据**:它可能提供了方法来读取Excel文件的不同工作表,从指定的单元格获取数据,甚至支持处理复杂的公式和图表。 2. **写入Excel数据**:允许开发者向Excel文件中添加新的行、列或者单元格数据,...

    ExcelUtil.java

    ExcelUtil.java

    ExcelUtil借助反射和POI对Excel读取,省略了以往读取Excel的繁琐步骤

    - 第二步,调用ExcelUtil提供的静态方法,如`ExcelUtil.readSheetToBeanList(Workbook workbook, Class&lt;T&gt; beanClass)`,传入Workbook对象和目标Bean类,即可得到一个包含所有数据的Bean列表。 ExcelUtil的实现...

    操作Excel的工具ExcelUtil源码

    考虑到Excel文件可能包含大量数据,ExcelUtil可能会采用流式处理或者内存优化策略来提高处理大文件时的性能。例如,使用SXSSF(Streaming Usermodel API)可以减少内存占用,因为它只在内存中保留有限的行,其余的...

    ExcelUtil万能读取类兼容03/07

    "ExcelUtil万能读取类兼容03/07"指的是一个Java编程中的类库,设计用于读取不同版本的Excel文件,包括Microsoft Excel 2003(.xls格式)和2007以后的版本(.xlsx格式)。这类工具对于开发人员来说至关重要,因为它们...

    ExcelUtil-master.zip

    封装了excel工具类,只需要几行代码就能实现导入导出功能,适用导出List和List的类型。项目来源于:https://github.com/SargerasWang/ExcelUtil

    ExcelUtil便捷读取工具 v3.1.6.zip

    而"ExcelUtil-release-3.1.6"则是实际的库文件,包含了所有必要的类和资源,可以直接引入到Java项目中使用。 总的来说,ExcelUtil便捷读取工具v3.1.6是Java开发者处理Excel数据的强大工具,尤其适合那些希望提高...

    excelUtil.zip

    在Java中,实现Excel导出通常会使用Apache POI库,这是一个强大的API,能处理Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。`ExcelUtils`中可能会有一个名为`exportExcel()`的方法,它是整个导出流程的...

    ExcelUtil,Excel的应用程序列表.zip

    Excel文件通常以.xlsx或.xls格式存在,包含多张工作表( Worksheets ),每张工作表由行列组成,每个单元格( Cell )可以存储文本、数字、公式或图表等数据。 Apache POI是Apache软件基金会的一个开源项目,它为...

Global site tag (gtag.js) - Google Analytics