重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
效果圖
成都創新互聯 - 服務器托管雅安,四川服務器租用,成都服務器租用,四川網通托管,綿陽服務器托管,德陽服務器托管,遂寧服務器托管,綿陽服務器托管,四川云主機,成都云主機,西南云主機,服務器托管雅安,西南服務器托管,四川/成都大帶寬,成都機柜租用,四川老牌IDC服務商
參考代碼
import?java.awt.*;
import?javax.swing.*;
public?class?GridFrame?extends?JFrame?{
//?指定橫向格子數量
static?final?int?W_NUM?=?3;
//?指定豎向格子數量
static?final?int?H_NUM?=?3;
//?指定每個格子的寬
static?final?int?CELL_WIDTH?=?50;
//?指定每個格子的高
static?final?int?CELL_HEIGHT?=?50;
CellPanel?cp;
public?GridFrame()?{
cp?=?new?CellPanel();
this.add(cp);
this.setBounds(350,?100,?W_NUM?*?CELL_WIDTH+15?,?H_NUM?*?CELL_HEIGHT
+?40);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setTitle("網格窗口");
this.setVisible(true);
}
public?static?void?main(String[]?args)?{
new?GridFrame();
}
class?CellPanel?extends?JPanel?{
@Override
public?void?paint(Graphics?g)?{
super.paint(g);
for?(int?i?=?0;?i??H_NUM;?i++)?{
for?(int?j?=?0;?j??W_NUM;?j++)?{
g.setColor(new?Color((int)?(Math.random()?*?256),
(int)?(Math.random()?*?256),
(int)?(Math.random()?*?256)));
g.fill3DRect(j?*?CELL_WIDTH,?i?*?CELL_HEIGHT,?CELL_WIDTH,
CELL_HEIGHT,?true);
}
}
}
}
}
利用java操作Excel源東東-jxl.jar讀取前單元格值 String cellValue = cells[k].getContents(); sb.append(cellValue+" "); } } sb.append("
"); } sb.append("
"); } } //關閉資源釋放內存 wb.close(); return sb.toString(); } 二.寫入Excel文件格式比文本內容加粗加某些顏色等參考jxlapi同推薦篇錯文章:/developerworks/cn/java/l-javaExcel/?ca=j-t10java 代碼public static void writeExcel(String fileName){ WritableWorkbook wwb = null; try { //首先要使用Workbook類工廠創建寫入工作薄(Workbook)象 wwb = Workbook.createWorkbook(new File(fileName)); } catch (IOException e) { e.printStackTrace(); } if(wwb!=null){ //創建寫入工作表 //WorkbookcreateSheet兩參數第工作表名稱第二工作表工作薄位置 WritableSheet ws = wwb.createSheet("sheet1", 0); //面始添加單元格 for(int i=0;i0){ //每工作表進行循環 for(int i=0;iif(breakSheet) break; //前工作表行數 int rowNum = sheet[i].getRows(); boolean breakRow = false; for(int j=0;jif(breakRow) break; //前行所單元格 Cell[] cells = sheet[i].getRow(j); if(cells!=nullcells.length0){ boolean breakCell = false; //每單元格進行循環 for(int k=0;kif(breakCell) break; //讀取前單元格值 String cellValue = cells[k].getContents(); if(cellValue==null) continue; if(cellValue.contains(keyWord)){ res = true; breakCell = true; breakRow = true; breakSheet = true; } } } } } } //關閉資源釋放內存 wb.close(); return res; } 四.往Excel插入圖片圖標插入圖片實現容易參看代碼:java 代碼public static void insertImg(WritableSheet dataSheet, int col, int row, int width, int height, File imgFile){ WritableImage img = new WritableImage(col, row, width, height, imgFile); dataSheet.addImage(img); } 代碼注釋已經清楚概用再解釋我用程序驗證:java 代碼try { //創建工作薄 WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls")); //待插入工作表 WritableSheet imgSheet = workbook.createSheet("Images",0); //要插入圖片文件 File imgFile = new File("D:/1.png"); //圖片插入第二行第單元格寬各占六單元格 insertImg(imgSheet,0,1,6,6,imgFile); workbook.write(); workbook.close(); catch (IOException e) { e.printStackTrace(); catch (WriteException e) { e.printStackTrace(); jxl支持png格式圖片jpg格式gif格式都支持五.插入頁眉頁腳般頁眉頁腳都三部,左,,右三部,利用代碼實現插入頁眉頁腳java 代碼public static void setHeader(WritableSheet dataSheet,String left,String center,String right){ HeaderFooter hf = new HeaderFooter(); hf.getLeft().append(left); hf.getCentre().append(center); hf.getRight().append(right); //加入頁眉 dataSheet.getSettings().setHeader(hf); //加入頁腳 //dataSheet.getSettings().setFooter(hf); } 我用代碼測試該:java 代碼try { //創建工作薄 WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls")); //待插入工作表 WritableSheet dataSheet = workbook.createSheet("加入頁眉",0); ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "第1頁,共3頁"); workbook.write(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } } 合并單元格://首先創建sheetWritableSheet sheetWrite=writeWorkbook.createSheet("sheet名稱",0);// 單元格(column, row)單元格(column1, row1)進行合并sheetWrite.mergeCells(column, row, column1, row1);java 操作exceljxl加邊框jxl合并單元格,單元格設置單元WritableCellFormat headerFormat = new WritableCellFormat(HEADER_FONT_STYLE);//水平居齊headerFormat.setAlignment(Alignment.CENTRE);//豎直向居齊headerFormat.setVerticalAlignment(VerticalAlignment.CENTRE);//建立標簽參數依:列索引、行索引、內容、格式Label seqLabel = new Label(0, 0, "序號", headerFormat);//增加單元格sheet.addCell(seqLabel);//合并單元格參數依:列索引、行索引、列索引+需要合并列數、行索引+需要合并行數sheet.mergeCells(0, 0, 0, 1);//設置單元格寬度字符單位sheet.setColumnView(0, "序號".length() + 10);Label basicInfoLabel = new Label(1, 0, "基本信息",headerFormat);sheet.addCell(basicInfoLabel);sheet.mergeCells(1, 0, 3, 0);//合并垮3行sheet.mergeCells(1, 1, 1, 3);//合并垮3列label = new Label(0, 1, "蘋);sheet.mergeCells(0,1, 0, 3- 1);//合并垮3列WritableCellFormat cellFormat = new WritableCellFormat();cellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);// 垂直居label.setCellFormat(cellFormat);sheet.addCell(label);注:再使cellFormat需要重新NEW WritableCellFormatjava怎么操作excel合并單元格
import?java.util.Scanner;
public?class?test
{?
int[]?number;
int[][]??op;
public?void?operation(int?p,int?start,int?end)
{
if(p==1){number[start-1]=end;}
else?if(p==2)?
{?int?sum=0;
?for(int?i=start-1;iend;i++)sum+=number[i];
?System.out.println(sum);
}
else?if(p==3)
{int?max=Integer.MIN_VALUE;
?for(int?i=start-1;iend;i++)if(number[i]max)max=number[i];
?System.out.println(max);
}
else
{
?System.out.println("非法操作");
}
}
?public?static?void?main(String[]?args)
{???
?int?i=0,j=0;
?test?t=new?test();
?int?n=0,m=0;
?Scanner?sc=new?Scanner(System.in);
?n=sc.nextInt();
?m=sc.nextInt();
?t.number=new?int[n];
?for(i=0;in;i++)t.number[i]=sc.nextInt();
?t.op=new?int[m][];
?for(i=0;im;i++)
?{
???t.op[i]=new?int[3];
???for(j=0;j3;j++)
???t.op[i][j]=sc.nextInt();
?}
?for(i=0;im;i++)
?{
??t.operation(t.op[i][0],t.op[i][1],t.op[i][2]); ?
?}
}
}
java表格就是java swing。
//創建表頭
String[] columnNames = { "First Name", "Last Name", "Sport",
"# of Years", "Vegetarian" };
//創建顯示數據
Object[][] data = {
{ "Kathy", "Smith", "Snowboarding", new Integer(5),
new Boolean(false) },
{ "John", "Doe", "Rowing", new Integer(3), new Boolean(true) },
{ "Sue", "Black", "Knitting", new Integer(2),
new Boolean(false) },
{ "Jane", "White", "Speed reading", new Integer(20),
new Boolean(true) },
{ "Joe", "Brown", "Pool", new Integer(10), new Boolean(false) } };
/*
* JTable還提供了一個重載的構造方法,傳入兩個Vector
* JTable(Vector rowData, Vector columnNames)
*
*/
final JTable table = new JTable(data, columnNames);
table.setBackground(Color.YELLOW);
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();
}