javaexcel模板
『壹』 java POI 導出 EXCEL模板 怎麼設置單元格格式為 文字
參考代碼 public static void createColHeader(HSSFSheet sheet, CellStyle cellStyle,String[] columHeader) {if (sheet != null) { sheet.setDefaultColumnWidth(20); HSSFRow row = sheet.createRow(0); for (int i = 0; i < columHeader.length; i++) { HSSFCell cell = row.createCell(i); cell.setCellValue(columHeader[i]); if (cellStyle != null) { cell.setCellStyle(cellStyle); } } freezePane(sheet,0,1,0,1); }}
『貳』 JAVA,Spring boot怎麼據資料庫數據生成Excel模板,含下拉框
只不過,jxl比較小,好用!對於下拉框聯動的功能
jxl沒有直接可以處理的!只能做好模板,然後用jxl往模板寫數據!這樣做,不完美,僅供參考02第一:excel中的聯動處理
名稱-定義 02設置一個區域,用來取值的區域,名稱為 第一級別下拉框的選項名
第一級別 02 下拉框 數據 有效性 序列 值為 選項框 和 前面設置的區域名稱相同
第二級別 02 下拉框 數據 有效性 序列 值為02=INDIRECT(B9) B9為第一級別的下拉框位置
第二:java程序的處理
A:對action進行判斷 准備需要的值02filePath = CommAttachInfoFactory.rootPath
+ "/filedata/npForm/scaleTarget/模板錄入模板/type-"+types[k]+".xls";
request.setAttribute("path", filePath);try{new OperationExcel().UpdateLuruExcel(filePath, temFileName,scaleTaskInfo);
} catch (Exception e) {
e.printStackTrace();}02B:具體的操作並生成文件02public void UpdateLuruExcel(String filename,String overDept,ScaleTargetForm scaleTaskInfo){try{Workbook wb = Workbook.getWorkbook(new File(filename));
WritableWorkbook workbook = Workbook.createWorkbook( new File(filename),wb);
WritableSheet sheet = workbook.getSheet(0);
sheet.addCell(new Label(0,1,scaleTaskInfo.getTask_name()+
"-"+scaleTaskInfo.getTask_start_time()));
workbook.write();
workbook.close(); }catch(Exception e){
e.printStackTrace();}}02附件為 一個做好的三級聯動例子其中 選擇區域的值 02可以做到另外一個sheet中,這樣美觀
『叄』 java中如何導入Excel,並給出模板
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.sql.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import jxl.*;
public class SimUpdate {
private String fileName;
public ZfzSimUpdate(String fileName){
this.fileName = fileName;
}
static Map tNames;
static{
tNames = new HashMap();
}
/**
* 用於產生 資料庫的 ID 值,組成 [年月日時分秒(100-999)] 總共 17 位數.
* 根據不同的表名,可保證同一秒內產生的 ID 號不重復
*/
private static String getDtime() {
String rid;
Date nd = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
rid = sdf.format(nd);
return rid;
}
public String getSeqNumber(String tableName) {
if(tableName == null || "".equals(tableName))
tableName = "GENERY";
Integer it;
// noinspection SynchronizeOnNonFinalField
synchronized(tNames){
it = (Integer)tNames.get(tableName);
if(it == null){
it = new Integer(100);
tNames.put(tableName, it);
}else{
if(it.intValue() > 998)
it = new Integer(100);
else
it = new Integer(1 + it.intValue());
tNames.put(tableName, it);
}
}
return getDtime() + String.valueOf(it);
}
private void updateDb(){
try{
Connection conn = DbPool.connectDB();
if(conn != null){
Statement stmt = conn.createStatement();
/**********************************************/
jxl.Workbook rwb = null;
try{
//構建Workbook對象 只讀Workbook對象
//直接從本地文件創建Workbook
//從輸入流創建Workbook
InputStream is = new FileInputStream(fileName);
rwb = Workbook.getWorkbook(is);
//Sheet(術語:工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但在程序中
//Sheet的下標是從0開始的
//獲取第一張Sheet表
Sheet rs = rwb.getSheet(0);
//獲取Sheet表中所包含的總列數
int rsColumns = rs.getColumns();
//獲取Sheet表中所包含的總行數
int rsRows = rs.getRows();
//獲取指這下單元格的對象引用
String simNumber = "",termSeqId = "";
//指定SIM卡號及序列號
for(int i=0;i<rsRows;i++){
for(int j=0;j<rsColumns;j++){
Cell cell = rs.getCell(j,i);
if(j==0){
simNumber = cell.getContents();
}
termSeqId = "633"+simNumber;
}
String sql = "查詢SQL";
int isOk = stmt.executeUpdate(sql);
if(isOk == 0 && !simNumber.equals("")){
String termId = getSeqNumber("termInf");
String insertSql = "自定義INSERT";
int isAdd = stmt.executeUpdate(insertSql);
if(isAdd > 0){
System.out.println("成功插入第"+i+"條數據");
}
}
//System.out.println("SIM卡號:"+simNumber+",序列號:"+termSeqId);
}
//以下代碼為寫入新的EXCEL,這里不使用,所以注釋
/*
//利用已經創建的Excel工作薄創建新的可寫入的Excel工作薄
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("D://Book2.xls"),rwb);
//讀取第一張工作表
jxl.write.WritableSheet ws = wwb.getSheet(0);
//獲取第一個單元格對象
jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
//決斷單元格的類型,做出相應的轉化
if (wc.getType() == CellType.LABEL) {
Label l = (Label) wc;
l.setString("The value has been modified.");
}
//寫入Excel對象
wwb.write();
wwb.close();
*/
}catch(Exception e){
e.printStackTrace();
}
finally{
//操作完成時,關閉對象,翻譯佔用的內存空間
rwb.close();
}
/*********************************************/
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]){
DbPool dbPool = new DbPool("dbConn.cfg");//連接資料庫
SimUpdate simUpdate = new SimUpdate("zfz_sim.xls");
simUpdate.updateDb();
}
}
『肆』 java 往excel模板里寫數,行不固定且最下面有合計,那位好點實例
嗨 你好
你可以參考一下:
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/**
* 導出excel
* @param reportParams 導出excel列名標示
* @param list導出excel值
* @param headersexcel頭
* @param reportName·excel的sheet名
* @param response
* @param startRow從哪一行開始放list值
* @param startCol 從哪一列開始放list值
* @return
*/
public boolean report(ReportBean rb, List list, XlsHeaderBean[] headers, String reportName, HttpServletResponse response, int startRow, int startCol, HttpServletRequest request){
WritableWorkbook wwb = null;
OutputStream os;
boolean flag = true;
Date date = new Date();
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String strDate = format.format(date);
try {
// 用Workbook類的工廠方法創建工作薄(Workbook)對象
response.setContentType("application/x-msdownload");
String sheetName = "report";
sheetName = sheetName.replaceAll(":", "").replaceAll("[)]", "")
.replaceAll("[(]", "");
// 這里解釋一下
// attachment; 這個代表要下載的,如果去掉就編程直接打開了
// filename是文件名,另存為或者下載時,為默認的文件名
response.addHeader("Content-Disposition", "attachment; filename="
+ new String(sheetName.getBytes("UTF-8"), "ISO-8859-1")+ strDate
+ ".xls");
os = response.getOutputStream();
wwb = Workbook.createWorkbook(os);
} catch (IOException e) {
e.printStackTrace();
return flag = false;
}
if (wwb != null) {
// 創建一個可寫入的工作表
// Workbook的createSheet方法兩個參數,1名稱,2位置
WritableSheet ws = wwb.createSheet(reportName, 0);
// 下面開始添加單元格
// 導出excel
try {
Label labelC = null;
for(int j = 0; j < headers.length; j++){
if(headers[j].isUnion()){
ws.mergeCells(headers[j].getCol(), headers[j].getRow(), headers[j].getCol()+headers[j].getColLength(), headers[j].getRow()+headers[j].getRowLength());
}
labelC = new Label(headers[j].getCol(), headers[j].getRow(), headers[j].getValue());
ws.addCell(labelC);
}
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
String value = null;
for (int i = 0; i < list.size(); i++) {
Map values = (Map)list.get(i);
for (int j = 0; j < rb.getReportParams().length; j++) {
// 這里需要注意的是,在Excel中,第一個參數表示列,第二個表示行
Label labelC;
if(values.get(rb.getReportParams()[j]) == null){
value = "";
} else {
if(values.get(rb.getReportParams()[j]) instanceof java.util.Date){
value = format.format(values.get(rb.getReportParams()[j]));
} else if(values.get(rb.getReportParams()[j]) instanceof java.math.BigDecimal){
value = values.get(rb.getReportParams()[j]).toString();
} else {
value = values.get(rb.getReportParams()[j]).toString();
}
}
labelC = new Label(j+startCol, i + startRow, value);
try {
// 將生成的單元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
return flag = false;
} catch (WriteException e) {
e.printStackTrace();
return flag = false;
}
}
}
if(rb.isHasImg()){
String rootPath = this.getServletContext().getRealPath("savefiles");
String imgPath = rb.getImgPath();
if(rootPath != null && rootPath.compareTo("") != 0 && imgPath != null && imgPath.compareTo("") !=0){
String[] strs = imgPath.split("\/");
String imgName = strs[strs.length-1];
File file = new File(rootPath + File.separator + imgName);
if(file.exists()){
WritableImage wi = new WritableImage(0, startRow + list.size() + 2,12,20, file);
ws.addImage(wi);
}
}
}
try {
// 從內存中寫入文件中
wwb.write();
wwb.close();
return flag;
} catch (IOException e) {
e.printStackTrace();
return flag = false;
} catch (WriteException e) {
e.printStackTrace();
return flag = false;
}
}
return flag;
}
『伍』 java如何將數據導入Excel模板
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public static ArrayList<String> readTelExcel(String filepath) {
try {
//查詢文件是否存在
File file = new File(filepath);
if (file.exists()) {
ArrayList<String> result = new ArrayList<String>();
//聲明一個excel文件對象
Workbook wb = Workbook.getWorkbook(file);
//讀取每一個工作薄,你也可能用wb.getSheets()得到全部工作薄
Sheet ws = wb.getSheet(0);
if (null != ws) {
//取出所有行
int rows = ws.getRows();
for (int i = 0; i < rows; i++) {
//讀取第一列中的內容
String cell = ws.getCell(0, i).getContents();
if (null != cell) {
result.add(cell.trim());
}
}
}
return result;
}
return null;
} catch (BiffException e) {
e.printStackTrace();
return null;
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
『陸』 用Java POI到實現一個Excel模板生成。但是遇到一個比較奇特的問題。
我這邊使用的時候是前台先遍歷標題,再遍歷內容,再傳到後台,在後台手工拼的標題(如果是多行標題),再遍歷。不知道你說的下拉列表功能是直接用的插件還是什麼。
『柒』 java導出excel新建行時,怎麼設置樣式,有一個excel的模板,但導出的數據有點多,需要在j
參考
xls.workbook.sheets(a).Range("A1:B2").Merge
這類的問題,可以打開excel,錄制宏,分析宏的內容,可以找到在java中實現的辦法.
『捌』 java如何將數據導入Excel模板
下面的例子,設置了數字、日期的格式,還有字體,顏色等。
File tempFile=new File( "d:/temp/output.xls ");
WritableWorkbook workbook = Workbook.createWorkbook(tempFile);
WritableSheet sheet = workbook.createSheet( "TestCreateExcel ", 0);
//一些臨時變數,用於寫到excel中
Label l=null;
jxl.write.Number n=null;
jxl.write.DateTime d=null;
//預定義的一些字體和格式,同一個Excel中最好不要有太多格式
WritableFont headerFont = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD, false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.BLUE);
WritableCellFormat headerFormat = new WritableCellFormat (headerFont);
WritableFont titleFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.RED);
WritableCellFormat titleFormat = new WritableCellFormat (titleFont);
WritableFont detFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
WritableCellFormat detFormat = new WritableCellFormat (detFont);
NumberFormat nf=new NumberFormat( "0.00000 "); //用於Number的格式
WritableCellFormat priceFormat = new WritableCellFormat (detFont, nf);
DateFormat df=new DateFormat( "yyyy-MM-dd ");//用於日期的
WritableCellFormat dateFormat = new WritableCellFormat (detFont, df);
//剩下的事情,就是用上面的內容和格式創建一些單元格,再加到sheet中
l=new Label(0, 0, "用於測試的Excel文件 ", headerFormat);
sheet.addCell(l);
//add Title
int column=0;
l=new Label(column++, 2, "標題 ", titleFormat);
sheet.addCell(l);
l=new Label(column++, 2, "日期 ", titleFormat);
sheet.addCell(l);
l=new Label(column++, 2, "貨幣 ", titleFormat);
sheet.addCell(l);
l=new Label(column++, 2, "價格 ", titleFormat);
sheet.addCell(l);
//add detail
int i=0;
column=0;
l=new Label(column++, i+3, "標題 "+i, detFormat);
sheet.addCell(l);
d=new DateTime(column++, i+3, new java.util.Date(), dateFormat);
sheet.addCell(d);
l=new Label(column++, i+3, "CNY ", detFormat);
sheet.addCell(l);
n=new jxl.write.Number(column++, i+3, 5.678, priceFormat);
sheet.addCell(n);
i++;
column=0;
l=new Label(column++, i+3, "標題 "+i, detFormat);
sheet.addCell(l);
d=new DateTime(column++, i+3, new java.util.Date(), dateFormat);
sheet.addCell(d);
l=new Label(column++, i+3, "SGD ", detFormat);
sheet.addCell(l);
n=new jxl.write.Number(column++, i+3, 98832, priceFormat);
sheet.addCell(n);
//設置列的寬度
column=0;
sheet.setColumnView(column++, 20);
sheet.setColumnView(column++, 20);
sheet.setColumnView(column++, 10);
sheet.setColumnView(column++, 20);
workbook.write();
workbook.close();
『玖』 java項目中怎麼實現jsp頁面Excel模板下載並彈框。
controller層關鍵代碼:
@RequestMapping(value="/excel")
publicModelAndViewexportExcel()throwsException{
ModelAndViewmv=newModelAndView();
PageDatapd=newPageData();
pd=this.getPageData();
Map<String,Object>dataMap=newHashMap<String,Object>();
List<String>titles=newArrayList<String>();
titles.add("辦事處");//1
titles.add("當日新增掃碼商戶(個)");//2
titles.add("當日交易筆數(筆)");//3
titles.add("當日交易金額");//4
titles.add("當日收益");//5
titles.add("累計新增掃碼商戶(個)");//6
titles.add("累計交易筆數(筆)");//7
titles.add("累計交易金額");//8
titles.add("累計收益");//9
dataMap.put("titles",titles);
Pagepage=newPage();
page.setPd(pd);
List<PageData>varOList=agencyService.list(page);
List<PageData>varList=newArrayList<PageData>();
for(inti=0;i<varOList.size();i++){
PageDatavpd=newPageData();
vpd.put("var1",varOList.get(i).get("AGENCYNAME").toString());//1
vpd.put("var2",varOList.get(i).get("TODAYINSTALL").toString());//2
vpd.put("var3",varOList.get(i).get("TODAYTRANS").toString());//3
vpd.put("var4",varOList.get(i).get("TODAYPRICE").toString());//4
vpd.put("var5",varOList.get(i).get("TODAYPAYMENT").toString());//5
vpd.put("var6",varOList.get(i).get("TOTALINSTALL").toString());//6
vpd.put("var7",varOList.get(i).get("TOTALTRANS").toString());//7
vpd.put("var8",varOList.get(i).get("TOTALPRICE").toString());//8
vpd.put("var9",varOList.get(i).get("TOTALPAYMENT").toString());//9
varList.add(vpd);
}
dataMap.put("varList",varList);
ObjectExcelViewerv=newObjectExcelView();
mv=newModelAndView(erv,dataMap);
returnmv;
}
POI生成EXCEL關鍵代碼:
{
@SuppressWarnings("deprecation")
@Override
(Map<String,Object>model,
HSSFWorkbookworkbook,HttpServletRequestrequest,
HttpServletResponseresponse)throwsException{
//TODOAuto-generatedmethodstub
Datedate=newDate();
Stringfilename=Tools.date2Str(date,"yyyyMMddHHmmss");
HSSFSheetsheet;
HSSFCellcell;
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment;filename="+filename+".xls");
sheet=workbook.createSheet("sheet1");
List<String>titles=(List<String>)model.get("titles");
intlen=titles.size();
HSSFCellStyleheaderStyle=workbook.createCellStyle();//標題樣式
headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
HSSFFontheaderFont=workbook.createFont(); //標題字體
headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
headerFont.setFontHeightInPoints((short)11);
headerStyle.setFont(headerFont);
shortwidth=20,height=25*20;
sheet.setDefaultColumnWidth(width);
for(inti=0;i<len;i++){//設置標題
Stringtitle=titles.get(i);
cell=getCell(sheet,0,i);
cell.setCellStyle(headerStyle);
setText(cell,title);
}
sheet.getRow(0).setHeight(height);
HSSFCellStylecontentStyle=workbook.createCellStyle();//內容樣式
contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
List<PageData>varList=(List<PageData>)model.get("varList");
intvarCount=varList.size();
for(inti=0;i<varCount;i++){
PageDatavpd=varList.get(i);
for(intj=0;j<len;j++){
Stringvarstr=vpd.getString("var"+(j+1))!=null?vpd.getString("var"+(j+1)):"";
cell=getCell(sheet,i+1,j);
cell.setCellStyle(contentStyle);
setText(cell,varstr);
}
}
}
}
『拾』 java操作excel,將多個excel模板寫入到一個excel的多個sheet中
用poi
Workbook myWorkbook= new HSSFWorkbook(new FileInputStream("路徑"));
Workbook workbookModel = new HSSFWorkbook(new FileInputStream("路徑"));
for(int i= 0; i<workbookModel.getNumberOfSheets(); i++) {
HSSFSheet(myWorkbook, workbookModel.getSheet(i));
}