POI 複製excel一行到另外一個sheet頁(修改)
package cosmic.leon;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.Region;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class RowCopy {
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
*/
@SuppressWarnings("deprecation")
public static void main(String[] args) {
try {
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(
"exlsample.xls"));
HSSFWorkbook wb = new HSSFWorkbook(fs);
//source ,target 為,源sheet 頁和目標sheet頁,
copyRows(wb, "source", "target", 3, 4, 20);
FileOutputStream fileOut = new FileOutputStream("exlsample.xls");
wb.write(fileOut);
fileOut.flush();
fileOut.close();
System.out.println("Operation finished......");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void copyRows(HSSFWorkbook wb, String pSourceSheetName,
String pTargetSheetName, int pStartRow, int pEndRow, int pPosition) {
HSSFRow sourceRow = null;
HSSFRow targetRow = null;
HSSFCell sourceCell = null;
HSSFCell targetCell = null;
HSSFSheet sourceSheet = null;
HSSFSheet targetSheet = null;
Region region = null;
int cType;
int i;
short j;
int targetRowFrom;
int targetRowTo;
if ((pStartRow == -1) || (pEndRow == -1)) {
return;
}
sourceSheet = wb.getSheet(pSourceSheetName);
targetSheet = wb.getSheet(pTargetSheetName);
// 拷貝合併的單元格
for (i = 0; i < sourceSheet.getNumMergedRegions(); i++) {
region = sourceSheet.getMergedRegionAt(i);
if ((region.getRowFrom() >= pStartRow)
&& (region.getRowTo() <= pEndRow)) {
targetRowFrom = region.getRowFrom() - pStartRow + pPosition;
targetRowTo = region.getRowTo() - pStartRow + pPosition;
region.setRowFrom(targetRowFrom);
region.setRowTo(targetRowTo);
targetSheet.addMergedRegion(region);
}
}
// 設定列寬
for (i = pStartRow; i <= pEndRow; i++) {
sourceRow = sourceSheet.getRow(i);
if (sourceRow != null) {
for (j = sourceRow.getLastCellNum(); j > sourceRow
.getFirstCellNum(); j--) {
targetSheet
.setColumnWidth(j, sourceSheet.getColumnWidth(j));
targetSheet.setColumnHidden(j, false);
}
break;
}
}
// 拷貝行並填充資料
for (; i <= pEndRow; i++) {
sourceRow = sourceSheet.getRow(i);
if (sourceRow == null) {
continue;
}
targetRow = targetSheet.createRow(i - pStartRow + pPosition);
targetRow.setHeight(sourceRow.getHeight());
for (j = sourceRow.getFirstCellNum(); j < sourceRow
.getPhysicalNumberOfCells(); j++) {
sourceCell = sourceRow.getCell(j);
if (sourceCell == null) {
continue;
}
targetCell = targetRow.createCell(j);
targetCell.setEncoding(sourceCell.getEncoding());
targetCell.setCellStyle(sourceCell.getCellStyle());
cType = sourceCell.getCellType();
targetCell.setCellType(cType);
switch (cType) {
case HSSFCell.CELL_TYPE_BOOLEAN:
targetCell.setCellValue(sourceCell.getBooleanCellValue());
System.out.println("--------TYPE_BOOLEAN:"
+ targetCell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_ERROR:
targetCell
.setCellErrorValue(sourceCell.getErrorCellValue());
System.out.println("--------TYPE_ERROR:"
+ targetCell.getErrorCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA:
// parseFormula這個函式的用途在後面說明
targetCell.setCellFormula(parseFormula(sourceCell
.getCellFormula()));
System.out.println("--------TYPE_FORMULA:"
+ targetCell.getCellFormula());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
targetCell.setCellValue(sourceCell.getNumericCellValue());
System.out.println("--------TYPE_NUMERIC:"
+ targetCell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_STRING:
targetCell
.setCellValue(sourceCell.getRichStringCellValue());
System.out.println("--------TYPE_STRING:" + i
+ targetCell.getRichStringCellValue());
break;
}
}
}
}
private static String parseFormula(String pPOIFormula) {
final String cstReplaceString = "ATTR(semiVolatile)"; //$NON-NLS-1$
StringBuffer result = null;
int index;
result = new StringBuffer();
index = pPOIFormula.indexOf(cstReplaceString);
if (index >= 0) {
result.append(pPOIFormula.substring(0, index));
result.append(pPOIFormula.substring(index
+ cstReplaceString.length()));
} else {
result.append(pPOIFormula);
}
return result.toString();
}
}
相關推薦
POI 複製excel一行到另外一個sheet頁(修改)
package cosmic.leon; import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IO
excel統計另外一個sheet的篩選資料
在sheet1裡面有一組資料,在兩個不同的sheet裡面統計另一個的資料,同一個sheet的時候也一樣。 例子:第一個sheet,需要計算出重複的資料 第二個sheet: 在需要統計的表格裡,宣告一下函式:=COUNTIF(SheetName!A1:A200,"Table
多個潤乾報表,匯出到一個excel中的不同sheet頁中
潤乾報表作為報表編輯工具使用起來十分的簡單方便,只需要簡單的屬性設定便可以實現匯出、列印等功能(具體參見潤乾開發應用文件),令人很鬱悶的是潤乾的匯出只是單表的匯出。 最近就有這麼一個需求:有很多.raq報表檔案,在一個頁面中列出所有的檔案的名稱,通過複選框選中下載,要求匯出
python 多個excel合併到一個sheet中
-- coding:utf-8 -- #多個excel合併成一個sheet import xlrd, xlsxwriter 待合併excel allxls = [“C:\Users\zhudong\Desktop\azkaban自動爬取\2018-09-01.xlsx”, “C:
python 將多個具有相同表頭內容的excel合併到一個多頁籤的excel中
多個excel 合併成一個多sheet的excel -- coding:utf-8 -- import xlrd, xlsxwriter 待合併excel allxls = [“C:\Users\zhudong\Desktop\azkaban自動爬取\2018-09-01.x
資料列印到excel,支援多sheet頁
public class excelDemo { public static void main(String[] args) { try{
c 讀取Excel的第一個Sheet表
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
使用POI讀取EXCEL中的所有Sheet表
{ HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(new File("/file/student.xls"))); HSSFSheet sheet=null; for (int i =0; i &
#Java--POI之Excel匯出工具類(支援多個sheet頁同時匯出)
一、核心程式碼 package com.yx.yzh.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.
POI 複製不同Sheet合成Excel檔案,完美解決單元格樣式和角標問題
專案背景: 1、需要從不同的Excel模板中讀取Sheet,生成到彙總的Excel檔案中 2、Excel格式是 Office2007版本,xlsx格式 3、需要將模板檔案的內容和格式,拷貝到新的檔案 4、解決POI 複製格式異常問題 工具程式碼: package com.sw
把一個excel中的sheet拷貝到另外一個excel中
任務描述 :把 source.xls 中的某個sheet 拷貝到 target.xls中去(注意,刪除了source.xls中的sheet)。 目標檔名、原檔名、拷貝的sheet名存在當前xls vba檔案的A2 B2 C2單元格中 。 Sub 按鈕1_Cli
excel怎麽把一個sheet的 全部內容打印到一頁紙上
jin http 內容 分享圖片 exce htm 打印 alt art 參考 https://jingyan.baidu.com/article/5225f26b04005ee6fa090830.htmlexcel怎麽把一個she
java讀取excel獲取數據寫入到另外一個excel
string stat arr final user tostring enc ++ cef pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.a
Excel的Sheet頁復制
進行 pre ktr trace eat div reat 問題 讀寫 最近在做一個項目,其中涉及基於模板對Excel的Sheet頁進行復制。在網上嘗試了很多,發現都不夠完美,苦惱。 然後在查閱資料的過程中,發現有一篇提及,POI的API只對同一個Excel文件中的She
項目筆記:導出Excel功能分sheet頁插入數據
mkdir system getpara creates service posit ade quest mst 導出Excel功能分sheet頁處理數據: /*導出EXCEL*/ public void createExcel() { log.info("導
openoffice轉excel為pdf檔案,根據excel檔案大小設定pdf頁面大小,只適用一個sheet的情況
1、maven注入連線openoffice的Jar和poi <dependency> <
讀取excel檔案內容輸入到另外一個檔案
package com.example.demo; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import
你需要一個新的model實體的時候必須new一個.奇怪的問題: 使用poi解析Excel的把資料插入資料庫同時把資料放在一個list中,返回到頁面展示,結果頁面把最後一條資料顯示了N次
資料庫顯示資料正常被插 插入一條列印一次資料,也是正常的,但是執行完,list就全部變成了最後一條資料.很奇怪 單步除錯 給list插入第一條資料 model是6607 連續插了多條資料都是6607 而且所有的值都變成了一樣
EXCEL多sheet頁公用類讀取方式
大概思路: 1.獲取前臺傳遞過來的FILE檔案及需要解析的XML檔案ID XML 如下: <?xml version="1.0" encoding="UTF-8" ?> <excels> <!-- 電力排程機構--><excel id="SCSE
Excel轉Html(十一)--POI處理Excel-獲取sheet總行數-總列數-行高-列高
獲取sheet行總數:sheet.getLastRowNum() 列總數:dataMap.get("maxColNum-" + form.getFormName() 獲取列最多的行,特別注意:sheet.getRow(0).getPhysicalNumberOfCells()不準確 行高:r