예제 #1
0
파일: OoxmlUtil.java 프로젝트: zhangrui1/SK
 /**
  * 全てのシートの拡大率を指定する
  *
  * @param workbook ワークブック
  * @param numerator 拡大率は numerator/denominatorで算出される
  * @param denominator 拡大率は numerator/denominatorで算出される
  */
 public static void setZoom(XSSFWorkbook workbook, int numerator, int denominator) {
   assert workbook != null;
   for (int nIndex = 0; nIndex < workbook.getNumberOfSheets(); nIndex++) {
     XSSFSheet sheet = workbook.getSheetAt(nIndex);
     sheet.setZoom(numerator, denominator);
   }
 }
예제 #2
0
파일: OoxmlUtil.java 프로젝트: zhangrui1/SK
 /**
  * 全てのシートの計算式を強制的に再評価させる
  *
  * @param workbook ワークブック
  */
 public static void setForceFormulaRecalculation(XSSFWorkbook workbook) {
   assert workbook != null;
   for (int nIndex = 0; nIndex < workbook.getNumberOfSheets(); nIndex++) {
     XSSFSheet sheet = workbook.getSheetAt(nIndex);
     sheet.setForceFormulaRecalculation(true);
   }
 }
예제 #3
0
파일: OoxmlUtil.java 프로젝트: zhangrui1/SK
 /**
  * 指定した行番号の<b>XSSFRow</b>を取得する。有効範囲外の行の場合は新規作成する。
  *
  * @param sheet <b>XSSFSheet</b>
  * @param nRow 取得したい行の行番号
  * @return <b>XSSFRow</b>
  */
 public static XSSFRow getRowAnyway(XSSFSheet sheet, int nRow) {
   assert sheet != null;
   XSSFRow row = sheet.getRow(nRow);
   if (row == null) {
     row = sheet.createRow(nRow);
   }
   return row;
 }
예제 #4
0
파일: OoxmlUtil.java 프로젝트: zhangrui1/SK
 /**
  * シートのクローンを行う
  *
  * @param workbook ワークブック
  * @param insertSheetId シートの挿入先番号
  * @param from コピー元のシート名
  * @param to 追加するシート名
  * @return 追加するシート
  */
 public static XSSFSheet cloneSheet(
     XSSFWorkbook workbook, int insertSheetId, String from, String to) {
   assert workbook != null && StringUtil.isNotEmpty(from) && StringUtil.isNotEmpty(to);
   int sheetId = workbook.getSheetIndex(from);
   XSSFSheet clone = workbook.cloneSheet(sheetId);
   String cloneName = clone.getSheetName();
   workbook.setSheetOrder(cloneName, insertSheetId);
   workbook.setSheetName(insertSheetId, to);
   int newSheetId = workbook.getSheetIndex(to);
   return workbook.getSheetAt(newSheetId);
 }
예제 #5
0
파일: OoxmlUtil.java 프로젝트: zhangrui1/SK
 /**
  * 列方向のセルの値を合算する
  *
  * @param sheet 編集対象シート
  * @param nColumn 行番号
  * @param nStartRow 開始列番号
  * @param nEndRow 終了列番号
  * @return 合算値
  */
 public static int sumColumn(XSSFSheet sheet, int nColumn, int nStartRow, int nEndRow) {
   int sum = 0;
   for (int nIndex = nStartRow; nIndex <= nEndRow; nIndex++) {
     XSSFRow row = sheet.getRow(nIndex);
     assert row != null;
     XSSFCell cell = row.getCell(nColumn);
     assert cell != null;
     if (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {
       sum += cell.getNumericCellValue();
     }
   }
   return sum;
 }
예제 #6
0
파일: OoxmlUtil.java 프로젝트: zhangrui1/SK
 /**
  * 罫線スタイルの<b>CellStyle</b>を生成 セル結合
  *
  * @param workbook ワークブック
  * @param sheet シート
  * @param nRowStart 開始行
  * @param nRowEnd       終了行
  * @param nColumnStart       開始列
  * @param nColumnEnd       終了列
  * @param style 罫線style
  */
 public static void setMerger(
     XSSFWorkbook workbook,
     XSSFSheet sheet,
     int nRowStart,
     int nRowEnd,
     int nColumnStart,
     int nColumnEnd,
     XSSFCellStyle style) {
   assert sheet != null;
   sheet.addMergedRegion(new CellRangeAddress(nRowStart, nRowEnd, nColumnStart, nColumnEnd));
   XSSFRow row = getRowAnyway(sheet, nRowStart);
   XSSFCell cell = getCellAnyway(row, nColumnStart);
   cell.setCellStyle(style);
 }
예제 #7
0
파일: OoxmlUtil.java 프로젝트: zhangrui1/SK
 /**
  * 指定セルの削除
  *
  * @param sheet シート
  * @param startRow 開始行番号
  * @param endRow 終了行番号
  * @param startColumn 開始列番号
  * @param endColumn 終了列番号
  */
 public static void removeCell(
     XSSFSheet sheet, int startRow, int endRow, int startColumn, int endColumn) {
   assert sheet != null;
   for (int nRow = startRow; nRow <= endRow; nRow++) {
     XSSFRow row = sheet.getRow(nRow);
     if (row != null) {
       for (int nColumn = startColumn; nColumn <= endColumn; nColumn++) {
         XSSFCell cell = row.getCell(nColumn);
         if (cell != null) {
           row.removeCell(cell);
         }
       }
     }
   }
 }
예제 #8
0
파일: OoxmlUtil.java 프로젝트: zhangrui1/SK
 /**
  * セルに設定された計算式を評価して値を取得する
  *
  * @param nRow 行番号
  * @param nColumn 列番号
  * @return セルの値
  */
 public static Object getDataByEvaluateFormula(XSSFSheet sheet, int nRow, int nColumn) {
   assert sheet != null;
   XSSFRow row = getRowAnyway(sheet, nRow);
   if (row != null) {
     XSSFCell cell = row.getCell(nColumn);
     if (cell != null) {
       FormulaEvaluator eval = sheet.getWorkbook().getCreationHelper().createFormulaEvaluator();
       if (eval != null) {
         CellValue value = eval.evaluate(cell);
         if (value != null) {
           return value.getNumberValue();
         }
       }
     }
   }
   return null;
 }
예제 #9
0
파일: OoxmlUtil.java 프로젝트: zhangrui1/SK
 /**
  * ハイパーリンクの設定
  *
  * @param sheet シート
  * @param nRow 対象行番号
  * @param nColumn 対象列番号
  * @param value ハイパーリンクテキスト
  * @param url ハイパーリンク先URL
  */
 public static void setHyperLink(
     XSSFSheet sheet, int nRow, int nColumn, String value, String url) {
   assert sheet != null;
   XSSFWorkbook workbook = sheet.getWorkbook();
   CreationHelper helper = workbook.getCreationHelper();
   Hyperlink hyperlink = helper.createHyperlink(Hyperlink.LINK_URL);
   hyperlink.setAddress(url);
   XSSFRow row = getRowAnyway(sheet, nRow);
   XSSFCell cell = getCellAnyway(row, nColumn);
   cell.setCellValue(value);
   cell.setHyperlink(hyperlink);
   // ハイパーリンクテキストの装飾
   XSSFFont font = workbook.createFont();
   XSSFCellStyle style = workbook.createCellStyle();
   // font.setColor(new XSSFColor(new Color(0, 0, 255)));
   font.setUnderline(XSSFFont.U_SINGLE);
   style.setFont(font);
   cell.setCellStyle(style);
 }