導航:首頁 > 編程語言 > java判斷excel導出成功poi

java判斷excel導出成功poi

發布時間:2021-12-03 00:26:52

java用poi導出excel文件,打開導出的文件時報錯,怎麼辦

兩個原因:

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

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

解決辦法:

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

關閉文件例子:

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

wb.write(os);

os.close();

Ⅱ Java POI怎樣判斷導出的Excel數據是否正確地保存到本地。考慮網路中斷,客戶不正確操作等因素。

無法判斷,POI只提供的API,只有對MS的office的讀寫功能。保存的excel會先生成一個臨時文件,再傳到client端。傳輸的問題本身不是POI來負責的。至於Http的文件傳輸,你就得用其他方法判斷了。

Ⅲ 如何用JAVA導出Excel(使用POI)

response.setContentType("bin");
response.setHeader("Content-disposition","attachment;filename=test.xls");
你在servlet裡面設置響應頭為這樣,然後就能夠實現下載了,然後使用輸出流進行輸出下載
.....還有問題的話就問..
你要是想全部代碼都寫的話..加我扣扣 1195391953..

Ⅳ java從資料庫中導出excel poi

這個我做獎金,考勤系統的時候經常用到,是一個方法,希望能幫到你。
用的 poi:
/**
* 將獎金列表轉換為獎金報表
* @param bonus
* @return byte[]
*/
private byte[] mainProcessBonusListToReport(List<Bonus> bonuses){
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
HSSFSheet hssfSheet =hssfWorkbook.createSheet("總獎金報表單");
/*第一行單元格合並*/

hssfSheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 12));
/*第一行*/

HSSFRow hssfRow = hssfSheet.createRow(0);
HSSFCell hssfCell=hssfRow.createCell(0);
hssfCell.setCellValue("派單業務考核記錄");
/*第二行*/

hssfRow = hssfSheet.createRow(1);
/*列名*/

String[] titles = {"序號","工號","話務員姓名","規范獎考核","業務獎金","話務獎金","服務質量獎金","星級系數","組長津貼","總獎金","增資獎金","英語翻譯","實發總獎金"};
/*for循環生成列名*/

for (int i = 0; i < titles.length; i++) {
hssfCell = hssfRow.createCell(i);
hssfCell.setCellValue(titles[i]);
}
/*填充數據*/

int rowIndex=2;
for (Bonus bonus : bonuses) {
hssfRow = hssfSheet.createRow(rowIndex);
hssfCell = hssfRow.createCell(0);
hssfCell.setCellValue(rowIndex-1);
hssfCell = hssfRow.createCell(1);
hssfCell.setCellValue(bonus.getWorkNumber());
hssfCell = hssfRow.createCell(2);
hssfCell.setCellValue(bonus.getName());
hssfCell = hssfRow.createCell(3);
hssfCell.setCellValue(bonus.getStandardPerformance());
hssfCell = hssfRow.createCell(4);
hssfCell.setCellValue(bonus.getBusinessBonus());
hssfCell = hssfRow.createCell(5);
hssfCell.setCellValue(bonus.getCallBonus());
hssfCell = hssfRow.createCell(6);
hssfCell.setCellValue(bonus.getServiceQualityBonus());
hssfCell = hssfRow.createCell(7);
hssfCell.setCellValue(bonus.getStarCoefficient());
hssfCell = hssfRow.createCell(8);
hssfCell.setCellValue(bonus.getGroupLeaderAllowance());
hssfCell = hssfRow.createCell(9);
hssfCell.setCellValue(bonus.getTotalBonus());
hssfCell = hssfRow.createCell(10);
hssfCell.setCellValue(bonus.getAdditionalBonus());
hssfCell = hssfRow.createCell(11);
hssfCell.setCellValue(bonus.getEnglishTranslateBonus());
hssfCell = hssfRow.createCell(12);
hssfCell.setCellValue(bonus.getActualTotalBonus());
rowIndex++;
}
byte[] bytes = TypeUtils.HSSFWorkbookToByteArray(hssfWorkbook);
return bytes;
}

Ⅳ java如何導出excel表格,如果用poi,java代碼如何實現.,求代碼!!!

項目結構:

xls:

\\\

XlsMain .java 類
//該類有main方法,主要負責運行程序,同時該類中也包含了用poi讀取Excel(2003版)

*

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

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;

/**
*
* @author Hongten</br>
*
* 參考地址:http://hao0610.iteye.com/blog/1160678
*
*/
public class XlsMain {

public static void main(String[] args) throws IOException {
XlsMain xlsMain = new XlsMain();
XlsDto xls = null;
List<XlsDto> list = xlsMain.readXls();

try {
XlsDto2Excel.xlsDto2Excel(list);
} catch (Exception e) {
e.printStackTrace();
}
for (int i = 0; i < list.size(); i++) {
xls = (XlsDto) list.get(i);
System.out.println(xls.getXh() + " " + xls.getXm() + " "
+ xls.getYxsmc() + " " + xls.getKcm() + " "
+ xls.getCj());
}

}

/**
* 讀取xls文件內容
*
* @return List<XlsDto>對象
* @throws IOException
* 輸入/輸出(i/o)異常
*/
private List<XlsDto> readXls() throws IOException {
InputStream is = new FileInputStream("pldrxkxxmb.xls");
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
XlsDto xlsDto = null;
List<XlsDto> list = new ArrayList<XlsDto>();
// 循環工作表Sheet
for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null) {
continue;
}
// 循環行Row
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow == null) {
continue;
}
xlsDto = new XlsDto();
// 循環列Cell
// 0學號 1姓名 2學院 3課程名 4 成績
// for (int cellNum = 0; cellNum <=4; cellNum++) {
HSSFCell xh = hssfRow.getCell(0);
if (xh == null) {
continue;
}
xlsDto.setXh(getValue(xh));
HSSFCell xm = hssfRow.getCell(1);
if (xm == null) {
continue;
}
xlsDto.setXm(getValue(xm));
HSSFCell yxsmc = hssfRow.getCell(2);
if (yxsmc == null) {
continue;
}
xlsDto.setYxsmc(getValue(yxsmc));
HSSFCell kcm = hssfRow.getCell(3);
if (kcm == null) {
continue;
}
xlsDto.setKcm(getValue(kcm));
HSSFCell cj = hssfRow.getCell(4);
if (cj == null) {
continue;
}
xlsDto.setCj(Float.parseFloat(getValue(cj)));
list.add(xlsDto);
}
}
return list;
}

/**
* 得到Excel表中的值
*
* @param hssfCell
* Excel中的每一個格子
* @return Excel中每一個格子中的值
*/
@SuppressWarnings("static-access")
private String getValue(HSSFCell hssfCell) {
if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {
// 返回布爾類型的值
return String.valueOf(hssfCell.getBooleanCellValue());
} else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {
// 返回數值類型的值
return String.valueOf(hssfCell.getNumericCellValue());
} else {
// 返回字元串類型的值
return String.valueOf(hssfCell.getStringCellValue());
}
}

}

XlsDto2Excel.java類
//該類主要負責向Excel(2003版)中插入數據

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class XlsDto2Excel {

/**
*
* @param xls
* XlsDto實體類的一個對象
* @throws Exception
* 在導入Excel的過程中拋出異常
*/
public static void xlsDto2Excel(List<XlsDto> xls) throws Exception {
// 獲取總列數
int CountColumnNum = xls.size();
// 創建Excel文檔
HSSFWorkbook hwb = new HSSFWorkbook();
XlsDto xlsDto = null;
// sheet 對應一個工作頁
HSSFSheet sheet = hwb.createSheet("pldrxkxxmb");
HSSFRow firstrow = sheet.createRow(0); // 下標為0的行開始
HSSFCell[] firstcell = new HSSFCell[CountColumnNum];
String[] names = new String[CountColumnNum];
names[0] = "學號";
names[1] = "姓名";
names[2] = "學院";
names[3] = "課程名";
names[4] = "成績";
for (int j = 0; j < CountColumnNum; j++) {
firstcell[j] = firstrow.createCell(j);
firstcell[j].setCellValue(new HSSFRichTextString(names[j]));
}
for (int i = 0; i < xls.size(); i++) {
// 創建一行
HSSFRow row = sheet.createRow(i + 1);
// 得到要插入的每一條記錄
xlsDto = xls.get(i);
for (int colu = 0; colu <= 4; colu++) {
// 在一行內循環
HSSFCell xh = row.createCell(0);
xh.setCellValue(xlsDto.getXh());
HSSFCell xm = row.createCell(1);
xm.setCellValue(xlsDto.getXm());
HSSFCell yxsmc = row.createCell(2);
yxsmc.setCellValue(xlsDto.getYxsmc());
HSSFCell kcm = row.createCell(3);
kcm.setCellValue(xlsDto.getKcm());
HSSFCell cj = row.createCell(4);
cj.setCellValue(xlsDto.getCj());
(xlsDto.getMessage());
}
}
// 創建文件輸出流,准備輸出電子表格
OutputStream out = new FileOutputStream("POI2Excel/pldrxkxxmb.xls");
hwb.write(out);
out.close();
System.out.println("資料庫導出成功");
}

}

XlsDto .java類
//該類是一個實體類

public class XlsDto {
/**
* 選課號
*/
private Integer xkh;
/**
* 學號
*/
private String xh;
/**
* 姓名
*/
private String xm;
/**
* 學院
*/
private String yxsmc;
/**
* 課程號
*/
private Integer kch;
/**
* 課程名
*/
private String kcm;
/**
* 成績
*/
private float cj;
public Integer getXkh() {
return xkh;
}
public void setXkh(Integer xkh) {
this.xkh = xkh;
}
public String getXh() {
return xh;
}
public void setXh(String xh) {
this.xh = xh;
}
public String getXm() {
return xm;
}
public void setXm(String xm) {
this.xm = xm;
}
public String getYxsmc() {
return yxsmc;
}
public void setYxsmc(String yxsmc) {
this.yxsmc = yxsmc;
}
public Integer getKch() {
return kch;
}
public void setKch(Integer kch) {
this.kch = kch;
}
public String getKcm() {
return kcm;
}
public void setKcm(String kcm) {
this.kcm = kcm;
}
public float getCj() {
return cj;
}
public void setCj(float cj) {
this.cj = cj;
}

}

後台輸出:
資料庫導出成功
1.0 hongten 信息技術學院 計算機網路應用基礎 80.0
2.0 王五 信息技術學院 計算機網路應用基礎 81.0
3.0 李勝基 信息技術學院 計算機網路應用基礎 82.0
4.0 五班古 信息技術學院 計算機網路應用基礎 83.0
5.0 蔡詩芸 信息技術學院 計算機網路應用基礎 84.0

Ⅵ 關於java poi 導出Excel如何導出的問題

簡單的辦法是,先做一份excel,這只好每一列的格式。把這個excel放到項目中,每次導出都是用這個excel當作模板復制一份即可。

Ⅶ java web poi如何按查詢結果導出相應的Excel最好有相應代碼實例。

package com.aerolink.aocs.util.fileUtil;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;

//import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class WriteExcelNew {

/**
* Excel文件
*/
private XSSFWorkbook wb = null;

/**
* 輸出Excel文件中的表對象
*/
private XSSFSheet sheet = null;

/**
* 輸出文件流
*/
private FileOutputStream fileOut = null;

/**
* 輸出文件名用戶自定義
*/
private String outputFilename = null;

/**
* 單元格樣式
*/
private XSSFCellStyle cellStyle = null;

// private String newsheet = null; //輸出Excel文件中的表名用戶自定義
/**
* 行
*/
private XSSFRow row=null;

/**
*
*/
private int rowNumber=-1;
/**
* @param outputFilename
* @param newsheet
*/
public WriteExcelNew(String outputFilename, String newsheet) {

wb = new XSSFWorkbook();
//wb.setSheetName(1, "qwe");//設置第一張表的名稱
sheet = wb.createSheet(newsheet);
//sheet.setColumnWidth(1, 40);//第一行 列寬
this.outputFilename = outputFilename;
// this.newsheet = newsheet;
}

/**
* <p>
* Description:exportToExcelFile(short rownum,short cellnum,int value)方法:
* </p>
* <p>
* 將int數據寫入Execl文件的表中
* </p>
*
* @param rownum
* @param cellnum
* @param value
*/
public void exportToExcelFile(int rownum, int cellnum, int value) {
if(rowNumber==-1){ //在poi3.8版本中,不這樣做,只能寫入最後一個單元格
rowNumber=rownum;
row = sheet.createRow(rownum);
}else if(rowNumber!=rownum){
rowNumber=rownum;
row = sheet.createRow(rownum);
}
//row.setHeight((short)50);//行高
XSSFCell cell = row.createCell(cellnum);
cell.setCellValue(value);
if(cellStyle==null){
setCellStyle("center","center","",false);
}
cell.setCellStyle(cellStyle);
}

/**
* <p>
* Description:exportToExcelFile(short rownum,short cellnum,String value)方法:
* </p>
* <p>
* 將String數據寫入Execl文件的表中
* </p>
*
* @param rownum
* @param cellnum
* @param value
*/
public void exportToExcelFile(int rownum, int cellnum, String value) {
if(rowNumber==-1){ //在poi3.8版本中,不這樣做,只能寫入最後一個單元格
rowNumber=rownum;
row = sheet.createRow(rownum);
}else if(rowNumber!=rownum){
rowNumber=rownum;
row = sheet.createRow(rownum);
}
XSSFCell cell = row.createCell(cellnum);
cell.setCellValue(value);
if(cellStyle==null){
setCellStyle("center","center","",false);
}
cell.setCellStyle(cellStyle);
}

/**
* <p>
* Description:exportToExcelFile(short rownum,short cellnum,double value)方法:
* </p>
* <p>
* 將double數據寫入Execl文件的表中
* </p>
*
* @param rownum
* @param cellnum
* @param value
*/
public void exportToExcelFile(int rownum, int cellnum, double value) {
if(rowNumber==-1){ //在poi3.8版本中,不這樣做,只能寫入最後一個單元格
rowNumber=rownum;
row = sheet.createRow(rownum);
}else if(rowNumber!=rownum){
rowNumber=rownum;
row = sheet.createRow(rownum);
}
XSSFCell cell = row.createCell(cellnum);
cell.setCellValue(value);
if(cellStyle==null){
setCellStyle("center","center","",false);
}
cell.setCellStyle(cellStyle);
}

/**
* <p>
* Description:exportToExcelFile(short rownum,short cellnum,boolean
* value)方法:
* </p>
* <p>
* 將boolean數據寫入Execl文件的表中
* </p>
*
* @param rownum
* @param cellnum
* @param value
*/
public void exportToExcelFile(int rownum, int cellnum, boolean value) {
if(rowNumber==-1){ //在poi3.8版本中,不這樣做,只能寫入最後一個單元格
rowNumber=rownum;
row = sheet.createRow(rownum);
}else if(rowNumber!=rownum){
rowNumber=rownum;
row = sheet.createRow(rownum);
}
XSSFCell cell = row.createCell(cellnum);
cell.setCellValue(value);
if(cellStyle==null){
setCellStyle("center","center","",false);
}
cell.setCellStyle(cellStyle);
}

/**
* <p>
* Description:exportToExcelFile(short rownum,short cellnum,Date value)方法:
* </p>
* <p>
* 將Date數據寫入Execl文件的表中
* </p>
*
* @param rownum
* @param cellnum
* @param value
*/
public void exportToExcelFile(int rownum, int cellnum, Date value) {
if(rowNumber==-1){ //在poi3.8版本中,不這樣做,只能寫入最後一個單元格
rowNumber=rownum;
row = sheet.createRow(rownum);
}else if(rowNumber!=rownum){
rowNumber=rownum;
row = sheet.createRow(rownum);
}
XSSFCell cell = row.createCell(cellnum);
cell.setCellValue(value);
if(cellStyle==null){
setCellStyle("center","center","",false);
}
cell.setCellStyle(cellStyle);
}

/**
* <p>
* Description:exportToExcelFile(short rownum,short cellnum,Calendar
* value)方法:
* </p>
* <p>
* 將Calendar數據寫入Execl文件的表中
* </p>
*
* @param rownum
* @param cellnum
* @param value
*/
public void exportToExcelFile(int rownum, int cellnum, Calendar value) {
if(rowNumber==-1){ //在poi3.8版本中,不這樣做,只能寫入最後一個單元格
rowNumber=rownum;
row = sheet.createRow(rownum);
}else if(rowNumber!=rownum){
rowNumber=rownum;
row = sheet.createRow(rownum);
}
XSSFCell cell = row.createCell(cellnum);
cell.setCellValue(value);
if(cellStyle==null){
setCellStyle("center","center","",false);
}
cell.setCellStyle(cellStyle);
}
/**
* 合並單元格 2012-3-30 孫貴春 add
* @param startRow
* @param startCol
* @param endRow
* @param endCol
*/
public void setMergedRegion(int startRow,int startCol,int endRow,int endCol){
sheet.addMergedRegion(new CellRangeAddress(startRow,endRow,startCol,endCol));//這與1.5版本明顯不同
}
/**
* 設置單元格樣式
* @param a_pos
* @param v_pos
* @param border
* @param wrap
*/
public void setCellStyle(String a_pos,String v_pos,String border,Boolean wrap){
cellStyle=wb.createCellStyle();
//水平位置
if(a_pos.equals("center")){
cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
}else if(a_pos.equals("left")){
cellStyle.setAlignment(CellStyle.ALIGN_LEFT);
}else{
cellStyle.setAlignment(CellStyle.ALIGN_RIGHT);
}
//垂直位置
if(v_pos.equals("center")){
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
}else if(v_pos.equals("top")){
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_TOP);
}else{
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_BOTTOM);
}
//邊框
if(border.equals("thin")){
cellStyle.setBorderBottom(CellStyle.BORDER_THIN);
cellStyle.setBorderLeft(CellStyle.BORDER_THIN);
cellStyle.setBorderRight(CellStyle.BORDER_THIN);
cellStyle.setBorderTop(CellStyle.BORDER_THIN);
}else if(border.equals("double")){
cellStyle.setBorderBottom(CellStyle.BORDER_DOUBLE);
cellStyle.setBorderLeft(CellStyle.BORDER_DOUBLE);
cellStyle.setBorderRight(CellStyle.BORDER_DOUBLE);
cellStyle.setBorderTop(CellStyle.BORDER_DOUBLE);
}else if(border.equals("thick")){
cellStyle.setBorderBottom(CellStyle.BORDER_THICK);
cellStyle.setBorderLeft(CellStyle.BORDER_THICK);
cellStyle.setBorderRight(CellStyle.BORDER_THICK);
cellStyle.setBorderTop(CellStyle.BORDER_THICK);
}else if(border.equals("medium")){
cellStyle.setBorderBottom(CellStyle.BORDER_MEDIUM);
cellStyle.setBorderLeft(CellStyle.BORDER_MEDIUM);
cellStyle.setBorderRight(CellStyle.BORDER_MEDIUM);
cellStyle.setBorderTop(CellStyle.BORDER_MEDIUM);
}else if(border.equals("none")){
cellStyle.setBorderBottom(CellStyle.BORDER_NONE);
cellStyle.setBorderLeft(CellStyle.BORDER_NONE);
cellStyle.setBorderRight(CellStyle.BORDER_NONE);
cellStyle.setBorderTop(CellStyle.BORDER_NONE);
}else if(border.equals("dotted")){
cellStyle.setBorderBottom(CellStyle.BORDER_DOTTED);
cellStyle.setBorderLeft(CellStyle.BORDER_DOTTED);
cellStyle.setBorderRight(CellStyle.BORDER_DOTTED);
cellStyle.setBorderTop(CellStyle.BORDER_DOTTED);
}
//設置自動換行
cellStyle.setWrapText(wrap);
/*
cellStyle.setRotation((short)90);//設置單元格內文字旋轉角度
XSSFFont font=wb.createFont();
font.setFamily(1);
font.setBold(true);
cellStyle.setFont(font);
*/
}

/**
* <p>
* Description: closeFileOut()方法:關閉文件輸出流
* </p>
*
* @throws IOException
*/
public void closeFileOut() throws IOException {

fileOut = new FileOutputStream(outputFilename);
wb.write(fileOut);
fileOut.close();
}

/**
* <p>
* 測試方法
* </p>
*
* @param arg
*/
public static void main(String arg[]) {

try {
WriteExcelNew writeExcel = new WriteExcelNew("bak\\new.xls", "newsheet");
writeExcel.exportToExcelFile((short) 0, (short) 0, 99.99);
writeExcel.closeFileOut();
} catch (Exception e) {
System.out.println("Something Happen");
e.printStackTrace();
}
}
}

Ⅷ java如何,判斷POI 導出Excel 是否成功

看是不是按你預期的邏輯執行結束的。

Ⅸ JAVA,POI導出EXCEL表,表中所有數據都是從後台直接獲取,求指導,越詳細越好

前幾天剛好因抄為工作需要做過相應的excel處理程序編寫,這里有一個例子,注釋也很詳細,具體參見doexeclsrcutilExeclUtil.java中的writeExcel方法,其中的寫出文件的保存路徑採用的是配置文件的形式,你也可以直接寫死,具體的內容你就看代碼吧

閱讀全文

與java判斷excel導出成功poi相關的資料

熱點內容
探險意外穿越到異界的電影 瀏覽:134
日本影片和韓國影片推薦 瀏覽:932
qq郵件pdf文件如何簽名 瀏覽:19
曰韓中文字幕電影免費看 瀏覽:296
已經下架的電影哪裡可以看 瀏覽:776
java讀取xml配置文件 瀏覽:416
法國電影 一個老頭帶一個小女孩 瀏覽:798
手機如何將app壓縮 瀏覽:3
編程乘法運算怎麼弄 瀏覽:961
深圳市吉屋網路技術有限公司 瀏覽:448
十大現實變成游戲的小說 瀏覽:35
香港愛情尺寸度電影推薦 瀏覽:575
java用方法實現加減 瀏覽:615
預警編程在哪裡學 瀏覽:741
黑暗與曙光配置文件 瀏覽:949
數據通信硬體是什麼 瀏覽:245
s3c2440外部中斷代碼 瀏覽:491
許君聰二龍湖浩哥的電影 瀏覽:510
騎士助手文件夾的名字 瀏覽:825
風雲雄霸天下小說全集txt下載 瀏覽:532

友情鏈接