導航:首頁 > 編程語言 > javapoiexcel模板

javapoiexcel模板

發布時間:2023-08-01 10:53:39

java用poi實現將資料庫裡面的數據導入已經存在的excel模板中。最好有實例參考,謝謝。

/**
*通過EXCEL模板導入團隊信息
*/
@ResponseBody
@RequestMapping("importTemp")
publicMap<String,String>importTemp(HttpServletRequestrequest,HttpSessionsession,
@RequestParam(value="excel",required=false)MultipartFilefile,HttpServletResponseresponse){
Yhbyhb=(Yhb)session.getAttribute(WebConstants.CURRENT_USER);
Stringzjr=yhb.getYhid();
List<DrTdb>tdxxList=newArrayList<DrTdb>();
Map<String,String>map=newHashMap<String,String>();
Stringsfcg="1";
Stringbcghs="";
Stringbcgyy="";
HSSFWorkbookworkbook=null;
try{
workbook=newHSSFWorkbook(file.getInputStream());
HSSFSheetsheet=workbook.getSheetAt(0);
if(sheet!=null)
{
intd=sheet.getPhysicalNumberOfRows();
other:for(inti=7;i<sheet.getPhysicalNumberOfRows();i++)
{
sfcg="2";
HSSFRowrow=sheet.getRow(i);
DrTdbtd=newDrTdb();
intrs=1;
//td.setTdbm("T"+DateUtil.CurrentTime("MM-dd"));
td.setZjr(zjr);
for(intj=0;j<8;j++)
{
HSSFCellcell=row.getCell(j);
if(j==0){
if(cell!=null){
搜喊姿StringcellStr=cell.toString();
if(isDigit(cellStr)!=""){
StringNDID=(String)tdglService.queryForObject("tdExcel.queryNd",isDigit(cellStr));
td.setNd(NDID);
}else{
sfcg="0";
bcghs=String.valueOf(i+1);
bcgyy="請填寫正確的年度";
breakother;
}
}else{
sfcg="0";
bcghs=String.valueOf(i+1);
bcgyy="年度不可為空";
breakother;
}
}elseif(j==1){
if(cell!=null){
StringcellStr=cell.toString();
StringYXID=(String)tdglService.queryForObject("tdExcel.queryIdByYx",cellStr);
StringYXDM=(String)tdglService.queryForObject("tdExcel.queryDmByYx",cellStr);
if(YXDM==null||YXDM==""){
sfcg="0";
bcghs=String.valueOf(i+1);
bcgyy="院系不存在";
breakother;
}
td.setSsyx(YXID);
//設置團隊編碼
StringcurrentYear=DateUtil.CurrentTime("yyyy");//當前年份
Stringtdbm="";
Stringstr=null;
str="T"+currentYear+YXDM;
StringmaxID=(String)tdglService.queryForObject("tdgl.queryMaxID",str);//當前團隊最大ID
Stringstr_q=maxID.substring(1);
intMAXID=Integer.parseInt(str_q);//將返回的字元串去掉T
tdbm="T"+(MAXID+1);
世絕滲唯td.setTdbm(tdbm);
}else{
sfcg="0";
bcghs=String.valueOf(i+1);
bcgyy="院系不存在";
breakother;
}
}elseif(j==3){
if(cell!=null){
StringcellStr=cell.toString();
String[]zdjs=cellStr.split(",");
for(intin=0;in<zdjs.length;in++){
zdjs[in]=zdjs[in].substring(1,zdjs[in].length()-1);
//zdjs[in]=isDigit(zdjs[in]);
zdjs[in]=(String)tdglService.queryForObject("tdExcel.queryIdByZgh",zdjs[in]);
if("".equals(zdjs[in])||zdjs[in]==null){
sfcg="0";
bcghs=String.valueOf(i+1);
bcgyy="教師編號有誤";
breakother;
}
}
td.setZdjs(zdjs);
}else{
sfcg="0";
bcghs=String.valueOf(i+1);
bcgyy="指導教師不可為空";
breakother;
}
}elseif(j==5){
if(cell!=null){
StringcellStr=cell.toString();
cellStr=cellStr.substring(1,cellStr.length()-1);
//BigDecimalbg=newBigDecimal(cellStr);
//cellStr=bg.toPlainString();
cellStr=(String)tdglService.queryForObject("tdExcel.queryIdByXh",cellStr);

if("".equals(cellStr)||cellStr==null){
sfcg="0";
bcghs=String.valueOf(i+1);
bcgyy="團隊組長學號有誤";
breakother;
}
else{
StringTdid=(String)tdglService.queryForObject("tdExcel.queryryid",cellStr);
StringXM=(String)tdglService.queryForObject("tdExcel.queryXmBy",cellStr);
if(Tdid!=null){
sfcg="0";
bcghs=String.valueOf(i+1);
bcgyy="團隊組長"+XM+"已存在";
breakother;
}
}
td.setTdzz(cellStr);
}else{
sfcg="0";
bcghs=String.valueOf(i+1);
bcgyy="團隊組長不可為空";
breakother;
}
}elseif(j==7){
if(cell!=null){
StringcellStr=cell.toString();
String[]tdzy=cellStr.split(",");
for(intk=0;k<tdzy.length;k++){
tdzy[k]=tdzy[k].substring(1,tdzy[k].length()-1);
tdzy[k]=(String)tdglService.queryForObject("tdExcel.queryIdByXh",tdzy[k]);
if("".equals(tdzy[k])||tdzy[k]==null){
sfcg="0";
bcghs=String.valueOf(i+1);
bcgyy="團隊組員學號有誤";
breakother;
}
rs++;
}
td.setTdzy(tdzy);
}else{
sfcg="0";
bcghs=String.valueOf(i+1);
bcgyy="團隊組員不可為空";
breakother;
}
}
}
td.setRs(String.valueOf(rs));
tdxxList.add(td);
}
}
}catch(IOExceptione){
e.printStackTrace();
}
if("2".equals(sfcg)){


for(DrTdbtdxx:tdxxList){
tdglService.insert("tdExcel.addTdxx",tdxx);
tdglService.insert("tdExcel.addTdzz",tdxx);
tdglService.insert("tdExcel.addTdzy",tdxx);
tdglService.insert("tdExcel.addZdjs",tdxx);
}

}
map.put("sfcg",sfcg);
map.put("bcghs",bcghs);
map.put("bcgyy",bcgyy);
returnmap;
}

看不懂留言

Ⅱ 如何用java poi編寫代碼來設置Excel單元格是否鎖定功能

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
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.poifs.filesystem.POIFSFileSystem;
/**
* @param inputFile 輸入模板文件路徑
* @param outputFile 輸入文件存放於伺服器路徑
* @param dataList 待導歲蘆出數據
* @throws Exception
* @roseuid:
*/
public void exportExcelFile(String inputFile, String outputFile, List dataList) throws Exception
{
/念前/用模板文件構造poi
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
//創建模板工作表
HSSFWorkbook templatewb = new HSSFWorkbook(fs);
//直接取模板第一個sheet對象
HSSFSheet templateSheet = templatewb.getSheetAt(1);
//得到模板的第一個sheet的第一行對象 為了得到模板樣式
HSSFRow templateRow = templateSheet.getRow(0);

//HSSFSheet timplateSheet = templatewb.getSheetAt(1);
//取得Excel文件的總列數
int columns = templateSheet.getRow((short) 0).getPhysicalNumberOfCells();
Debug.println("columns is : " + columns);
//創建樣式數組
HSSFCellStyle styleArray[] = new HSSFCellStyle[columns];

//一次性創建所有列的樣式放在數組里
for (int s = 0; s < columns; s++)
{
//得到數組實例
styleArray[s] = templatewb.createCellStyle();
}
//循乎高帶環對每一個單元格進行賦值
//定位行
for (int rowId = 1; rowId < dataList.size(); rowId++)
{
//依次取第rowId行數據 每一個數據是valueList
List valueList = (List) dataList.get(rowId - 1);
//定位列
for (int columnId = 0; columnId < columns; columnId++)
{
//依次取出對應與colunmId列的值
//每一個單元格的值
String dataValue = (String) valueList.get(columnId);
//取出colunmId列的的style
//模板每一列的樣式
HSSFCellStyle style = styleArray[columnId];
//取模板第colunmId列的單元格對象
//模板單元格對象
HSSFCell templateCell = templateRow.getCell((short) columnId);
//創建一個新的rowId行 行對象
//新建的行對象
HSSFRow hssfRow = templateSheet.createRow(rowId);
//創建新的rowId行 columnId列 單元格對象
//新建的單元格對象
HSSFCell cell = hssfRow.createCell((short) columnId);
//如果對應的模板單元格 樣式為非鎖定
if (templateCell.getCellStyle().getLocked() == false)
{
//設置此列style為非鎖定
style.setLocked(false);
//設置到新的單元格上
cell.setCellStyle(style);
}
//否則樣式為鎖定
else
{
//設置此列style為鎖定
style.setLocked(true);
//設置到新單元格上
cell.setCellStyle(style);
}
//設置編碼
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//Debug.println("dataValue : " + dataValue);
//設置值 統一為String
cell.setCellValue(dataValue);
}
}
//設置輸入流
FileOutputStream fOut = new FileOutputStream(outputFile);
//將模板的內容寫到輸出文件上
templatewb.write(fOut);
fOut.flush();

//操作結束,關閉文件
fOut.close();

}

Ⅲ java操作poi怎麼更改excel中的數據

POI里可能沒有這個機能。 不過你可以這樣做。 把帶有這個格式的Excel文件,做為模板。 每次把模板文件讀進來,把自己要輸出的數據填到對應的單元格里。 之後,把填完數據的Excel文件,保存到指定路徑里。或者從瀏覽器里彈出。

Ⅳ 急!!!java用poi導出excel文件,打開導出的文件時報錯「文件錯誤,數據可能丟失」

兩個原因:

1.你的excel模版本身有問題,可以嘗試新建一個模版。

2.你的excel使用了一些POI不支持的函數。

解決辦法:

另存是由excel重寫了完整的文件,可以解決問題。

關閉文件例子:

FileOutputStream os = new FileOutputStream("workbook.xls");

wb.write(os);

os.close();

Ⅳ java poi 在伺服器生成excel文件

報格式錯誤是因為你沒有填充EXCEL的內容。
正確的做法是:
1, HSSFWorkbook ws = new HSSFWorkbook();//建立新HSSFWorkbook對象
2, Sheet sheet = workbook.createSheet(0); //建立一個新的sheet
3,Row row = sheet.createRow(1); //建立一個新的row對象
4, Cell cell = row.createCell(0); //在row上創建方格即列,
cell.setCellValue(cellValue); //設置這個行中列的值
cell.setCellStyle(cellStyle); //設置樣式

閱讀全文

與javapoiexcel模板相關的資料

熱點內容
常微分第三版答案pdf 瀏覽:262
安卓機qq怎麼開懸浮窗 瀏覽:61
備孕三年了怎麼緩解壓力大 瀏覽:741
登錄阿里雲伺服器黑屏 瀏覽:334
匿名元組Python 瀏覽:723
華為運動健康存儲的文件夾 瀏覽:520
cad正多邊形命令 瀏覽:461
壓縮比150能加97油嗎 瀏覽:397
linux新建群在哪個文件夾 瀏覽:794
韻達快運app在哪裡簽收 瀏覽:336
阿里雲伺服器如何綁定備案域名 瀏覽:273
單片機用什麼鍵盤好 瀏覽:25
android動畫面試 瀏覽:309
pdf無法刪除 瀏覽:90
ftp刪除文件java 瀏覽:89
裂變棋牌源碼 瀏覽:87
邀月命令江別鶴退婚 瀏覽:656
春秋app在哪裡查詢 瀏覽:136
用linux設計 瀏覽:747
安卓intent什麼意思 瀏覽:946