导航:首页 > 文件类型 > javaexcel文件导入

javaexcel文件导入

发布时间:2023-08-17 22:33:04

java 怎么把 excel文件导入到数据库

你好:
Java代码
1.<%@page language="java" contentType="text/html; charset=utf-8" %>
2.<%@page import="java.io.File"%>
3.<%@page import="java.io.InputStream"%>
4.<%@page import="java.io.FileInputStream"%>
5.<%@page import="java.util.Vector"%>
6.<%@page import="java.util.Iterator"%>
7.<%@page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"%>
8.<%@page import="org.apache.poi.hssf.usermodel.HSSFSheet"%>
9.<%@page import="org.apache.poi.hssf.usermodel.HSSFRow"%>
10.<%@page import="org.apache.poi.hssf.usermodel.HSSFCell"%>
11.<%@page import="org.apache.poi.poifs.filesystem.POIFSFileSystem"%>
12.<%@page import="com.fuyun.hp.common.PubUtil"/>
13.<%@page import="com.fuyun.hp.hibernate.mapping.RadioType"%>
14.<%@page import="com.fuyun.hp.hibernate.mapping.RadioTypeDAO"%>
15.<%@page import="com.fuyun.hp.common.SpringContext"/>
16.<%@page import="org.springframework.orm.hibernate3.HibernateTransactionManager"/>
17.<%@page import="org.springframework.transaction.TransactionDefinition"/>
18.<%@page import="org.springframework.transaction.TransactionStatus"/>
19.<%@page import="org.springframework.transaction.support.DefaultTransactionDefinition"/>
20.<%
21.//出于考虑显示格式,实际运行时,请将代码中的全角空格转换为半角空格
22.//代码中的PubUtil.nvl(Object)方法,当Object为null时返回空串(也就是类似Oracle中的nvl方法)
23.request.setCharacterEncoding("utf-8");
24.File tempPath = new File(getServletContext().getRealPath("/")
25.+ AdsUtil.TEMP_UPLOAD_PATH);
26.if (!tempPath.exists())
27.return;
28.
29.String fileName = "radioTree.xls";
30.fileName = tempPath.toString() + "\\" + fileName;
31.InputStream inp = new FileInputStream(fileName);
32.HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp));
33.HSSFSheet sheet = wb.getSheetAt(0);
34.RadioType rt;
35.RadioTypeDAO rtDao = RadioTypeDAO.getInstance();
36.
37.HibernateTransactionManager tManager = SpringContext.getTransactionManager();
38.TransactionDefinition td = new DefaultTransactionDefinition();
39.TransactionStatus ts = tManager.getTransaction(td);
40.
41.for (Iterator<HSSFRow> rit = (Iterator<HSSFRow>)sheet.rowIterator(); rit.hasNext(); ) {
42.HSSFRow row = rit.next();
43.boolean existFlag = true;
44.for(short index = 0;index < row.getPhysicalNumberOfCells();index ++){
45.HSSFCell cell = row.getCell(index);
46.if(index == row.getLastCellNum() && cell == null)
47.existFlag = false;
48.else if(index < row.getLastCellNum() && cell == null)
49.continue;
50.else
51.break;
52.}
53.if(existFlag == false){
54.break;
55.}
56.else{
57.Vector<String> values = new Vector<String>();
58.rt = null;
59.try{
60.if(row.getRowNum() == 0)//从第2行开始读取
61.continue;
62.for (int index = 0; index < 5; index ++) {
63.HSSFCell cell = row.getCell(new Short(index + ""));
64.if(cell == null)
65.values.add("");
66.else{
67.if(cell.getCellType() == cell.CELL_TYPE_NUMERIC){
68.values.add(String.format("%.0f", cell.getNumericCellValue()));
69.}
70.else
71.values.add(PubUtil.nvl(cell.getStringCellValue()));
72.}
73.}
74.
75.if("".equals(PubUtil.nvl(values.get(0)))){
76.rt = new RadioType();
77.}
78.else{
79.rt = rtDao.get(values.get(0));
80.}
81.rt.setId(values.get(0));//id
82.rt.setParentId(PubUtil.nvl(values.get(1)));//上级id
83.rt.setName(PubUtil.nvl(values.get(2)));//名称
84.rt.setType(PubUtil.nvl(values.get(3)));//类型
85.rt.setOrderIndex(Integer.parseInt(PubUtil.nvl(values.get(4))));//排序
86.
87.if("".equals(PubUtil.nvl(values.get(0)))){
88.rtDao.save(rt);
89.}
90.else{
91.rtDao.update(rt);
92.}
93.out.println(rt);
94.}
95.catch(Exception e){
96.tManager.rollback(ts);
97.e.printStackTrace();
98.out.print("{success: false, info:'导入失败!'}");
99.return;
100.}
101.}
102.}
103.tManager.commit(ts);
104.out.print("{success: true}");
105. %>

Ⅱ java使用什么技术实现excel数据的批量导入导出

java使用第三方工具包POI技术实现excel数据的批量导入导出。

举例如下:

1、下载apache的相关jar包。poi-ooxml-3.6.jar xmlbeans-2.3.0.jar等,如图:

2、编写相关的读写类

/**

* 读取xls文件内容

*/

private
List<XlsDto> readXls() throws
IOException {

InputStream is = new
FileInputStream("test.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;

}

3、导出就是输入到一个新的excel文件里面

public void writeXls(List<Student> list, String path) throws Exception {

if (list == null) {原始数据为空,直接返回

return;

}

int countColumnNum = list.size();//设置列数

HSSFWorkbook book = new HSSFWorkbook(); //创建工作表对象

HSSFSheet sheet = book.createSheet("studentSheet");

// 创建第一行

HSSFRow firstRow = sheet.createRow(0);

HSSFCell[] firstCells = new HSSFCell[countColumnNum];

//创建表头

String[] options = { "no", "name", "age", "score" };

//循环数据域

for (int j = 0; j < options.length; j++) {

firstCells[j] = firstRow.createCell(j);

firstCells[j].setCellValue(new HSSFRichTextString(options[j]));

}

//处理每一个cell的值

for (int i = 0; i < countColumnNum; i++) {

HSSFRow row = sheet.createRow(i + 1);

Student student = list.get(i);

for (int column = 0; column < options.length; column++) {

HSSFCell no = row.createCell(0);

HSSFCell name = row.createCell(1);

HSSFCell age = row.createCell(2);

HSSFCell score = row.createCell(3);

no.setCellValue(student.getNo());

name.setCellValue(student.getName());

age.setCellValue(student.getAge());

score.setCellValue(student.getScore());

}

}

File file = new File(path);

OutputStream os = new FileOutputStream(file);

System.out.println(Common.WRITE_DATA + path);

book.write(os);

os.close();

}

Ⅲ java通过poi把excel文件导入mysql数据库报错

java通过poi把excel文件导入mysql数据库报错是因为excel中的数据类型要跟mysql中的数据类型和长度对应,否则类型转换异常是最常见的。所以插入到mysql数据库的时候需要做类型检查。

1、Excel中的测试数据:

Ⅳ 求助:怎么用一个Java程序实现Excel数据导入

做过一个项目中EXCEL导入是纯JAVA程序写的,但是比较繁琐。自定义了一个XML文件,通过XML文件配置导入数据字段的约束和关系。例如,主键、外键、是否允许为空等约束,通过此列对应数据库某个表中相应的主键,及联合主键,各列之间的关系等都考虑在内。通过JDOM解析XML文件,迭代后取相当的值判断,生成导入错误文件。正确时保存入数据库,返回前台信息。

Ⅳ java web 怎么导入excel文件

1.要正确的将Web客户端的Excel文件导入到服务器的数据库中,需要将客户端的Excel文件上传到服务器上。可以使用FileUpload控件完成。2.Excel文件上传到服务器指定的目录中,这里假设是该站点的upfiles目录中。3.使用SQL语句从upfiles目录中的上传Excel文件中读取数据显示或写入数据库。

Ⅵ java中怎么把excel导入数据库

1、加入依赖的jar文件:

引用:
*mysql的jar文件
*Spring_HOME/lib/poi/*.jar

2、编写数据库链接类

packagecom.zzg.db;

importjava.sql.Connection;
importjava.sql.DriverManager;

publicclassDbUtils{
privatestaticConnectionconn;

static{
try{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost/test","root","123456");
}catch(Exceptione){
e.printStackTrace();
}
}

publicstaticConnectiongetConn(){
returnconn;
}

publicstaticvoidsetConn(Connectionconn){
DbUtils.conn=conn;
}
}

3、编写数据库操作类

packagecom.zzg.db;

importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.SQLException;

publicclassExcuteData{
privatePreparedStatementpstmt;
publicbooleanExcuData(Stringsql){
Connectionconn=DbUtils.getConn();
booleanflag=false;
try{
pstmt=conn.prepareStatement(sql);
flag=pstmt.execute();
}catch(SQLExceptione){
e.printStackTrace();
}
returnflag;
}
}

4、编写Excel表格实体类

packagecom.zzg.model;

publicclassTableCell{
privateString_name;
privateString_value;

publicStringget_name(){
return_name;
}

publicvoidset_name(String_name){
this._name=_name;
}

publicStringget_value(){
return_value;
}

publicvoidset_value(String_value){
this._value=_value;
}
}

5、编写主键生成方法

packagecom.zzg.util;

importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.Random;

publicclassGenericUtil{
()
{
StringprimaryKey;
primaryKey=newSimpleDateFormat("yyyyMMddHHmmss").format(newDate());
Randomr=newRandom();
primaryKey+=r.nextInt(100000)+100000;
returnprimaryKey;
}
}

6、编写Excel操作类

packagecom.zzg.deployData;

importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.Serializable;
importjava.util.ArrayList;
importjava.util.List;
importorg.apache.poi.hssf.usermodel.HSSFCell;
importorg.apache.poi.hssf.usermodel.HSSFRow;
importorg.apache.poi.hssf.usermodel.HSSFSheet;
importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
importcom.zzg.db.ExcuteData;
importcom.zzg.model.TableCell;
importcom.zzg.util.GenericUtil;

publicclassOperExcel<TextendsSerializable>{
privateHSSFWorkbookworkbook;
privateStringtableName;
privateClass<T>type;
privateStringsheetName;

publicOperExcel(FileexcelFile,StringtableName,Class<T>type,
StringsheetName)throwsFileNotFoundException,
IOException{
workbook=newHSSFWorkbook(newFileInputStream(excelFile));
this.tableName=tableName;
this.type=type;
this.sheetName=sheetName;
InsertData();
}

//向表中写入数据
publicvoidInsertData(){
System.out.println("yyy");
ExcuteDataexcuteData=newExcuteData();
List<List>datas=getDatasInSheet(this.sheetName);
//向表中添加数据之前先删除表中数据
StringstrSql="deletefrom"+this.tableName;
excuteData.ExcuData(strSql);
//拼接sql语句
for(inti=1;i<datas.size();i++){
strSql="insertinto"+this.tableName+"(";
Listrow=datas.get(i);
for(shortn=0;n<row.size();n++){
TableCellexcel=(TableCell)row.get(n);
if(n!=row.size()-1)
strSql+=excel.get_name()+",";
else
strSql+=excel.get_name()+")";
}
strSql+="values(";
for(shortn=0;n<row.size();n++){
TableCellexcel=(TableCell)row.get(n);
try{
if(n!=row.size()-1){
strSql+=getTypeChangeValue(excel)+",";
}else
strSql+=getTypeChangeValue(excel)+")";
}catch(RuntimeExceptione){
e.printStackTrace();
}catch(Exceptione){
e.printStackTrace();
}
}
//执行sql
excuteData.ExcuData(strSql);
}
}

/**
*获得表中的数据
*@paramsheetName表格索引(EXCEL是多表文档,所以需要输入表索引号)
*@return由LIST构成的行和表
*/
publicList<List>getDatasInSheet(StringsheetName){
List<List>result=newArrayList<List>();
//获得指定的表
HSSFSheetsheet=workbook.getSheet(sheetName);
//获得数据总行数
introwCount=sheet.getLastRowNum();
if(rowCount<1){
returnresult;
}
//逐行读取数据
for(introwIndex=0;rowIndex<rowCount;rowIndex++){
//获得行对象
HSSFRowrow=sheet.getRow(rowIndex);
if(row!=null){
List<TableCell>rowData=newArrayList<TableCell>();
//获得本行中单元格的个数
intcolumnCount=sheet.getRow(0).getLastCellNum();
//获得本行中各单元格中的数据
for(shortcolumnIndex=0;columnIndex<columnCount;columnIndex++){
HSSFCellcell=row.getCell(columnIndex);
//获得指定单元格中数据
ObjectcellStr=this.getCellString(cell);
TableCellTableCell=newTableCell();
TableCell.set_name(getCellString(
sheet.getRow(0).getCell(columnIndex)).toString());
TableCell.set_value(cellStr==null?"":cellStr
.toString());
rowData.add(TableCell);
}
result.add(rowData);
}
}
returnresult;
}

/**
*获得单元格中的内容
*
*@paramcell
*@returnresult
*/
protectedObjectgetCellString(HSSFCellcell){
Objectresult=null;
if(cell!=null){
intcellType=cell.getCellType();
switch(cellType){

caseHSSFCell.CELL_TYPE_STRING:
result=cell.getStringCellValue();
break;
caseHSSFCell.CELL_TYPE_NUMERIC:
result=cell.getNumericCellValue();
break;
caseHSSFCell.CELL_TYPE_FORMULA:
result=cell.getNumericCellValue();
break;
caseHSSFCell.CELL_TYPE_ERROR:
result=null;
break;
caseHSSFCell.CELL_TYPE_BOOLEAN:
result=cell.getBooleanCellValue();
break;
caseHSSFCell.CELL_TYPE_BLANK:
result=null;
break;
}
}
returnresult;
}

//根据类型返回相应的值
@SuppressWarnings("unchecked")
(TableCellexcelElement)
throwsRuntimeException,Exception{
StringcolName=excelElement.get_name();
StringcolValue=excelElement.get_value();
StringretValue="";
if(colName.equals("id")){
retValue="'"+GenericUtil.getPrimaryKey()+"'";
returnretValue;
}
if(colName==null){
retValue=null;
}
if(colName.equals("class_createuser")){
retValue="yaa101";
return"'"+retValue+"'";
}
retValue="'"+colValue+"'";
returnretValue;
}
}

7、编写调用操作Excel类的方法

packagecom.zzg.deployData;

importjava.io.File;
importjava.io.FileNotFoundException;
importjava.io.IOException;

publicclassDeployData{
privateFilefileOut;

publicvoidexcute(Stringfilepath){
fileOut=newFile(filepath);
this.deployUserInfoData();
}

publicvoiddeployUserInfoData(){
try{
newOperExcel(fileOut,"test",Object.class,"Sheet1");
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
}

8、编写客户端

packagecom.zzg.client;

importcom.zzg.deployData.DeployData;

publicclassDeployClient{
publicstaticvoidmain(String[]args){
DeployDatadeployData=newDeployData();
deployData.excute("D://test.xls");
}
}

Ⅶ 如何用Java将excel数据导入数据库

public static void main(String args[]) throws BiffException, IOException, WriteException{
//1 从Excel文件读取数据表

//Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。
//读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:
//(完整代码见ExcelReading.java)

try
{
//构建Workbook对象, 只读Workbook对象
//直接从本地文件创建Workbook
//从输入流创建Workbook
InputStream is = new FileInputStream("D:/user.xls");
jxl.Workbook rwb = Workbook.getWorkbook(is);

//一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。参考下面的代码片段:

//获取第一张Sheet表
Sheet rs = (Sheet) rwb.getSheet(0);
//我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话,
//要注意的一点是下标从0开始,就像数组一样。

//一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。参考下面的代码片段:

//获取第一行,第一列的值
Cell c00 = ((jxl.Sheet) rs).getCell(0, 0);
String strc00 = c00.getContents();

//获取第一行,第二列的值
Cell c10 = ((jxl.Sheet) rs).getCell(1, 0);
String strc10 = c10.getContents();

//获取第二行,第二列的值
Cell c11 = ((jxl.Sheet) rs).getCell(1, 1);
String strc11 = c11.getContents();

System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " + c00.getType());
System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " + c10.getType());
System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " + c11.getType());

//如果仅仅是取得Cell的值,我们可以方便地通过getContents()方法,
//它可以将任何类型的Cell值都作为一个字符串返回。示例代码中Cell(0, 0)是文本型,
//Cell(1, 0)是数字型,Cell(1,1)是日期型,通过getContents(),三种类型的返回值都是字符型。

//如果有需要知道Cell内容的确切类型,API也提供了一系列的方法。参考下面的代码片段:

String strcc00 = null;
double strcc10 = 0.00;
Date strcc11 = null;

Cell cc00 = ((jxl.Sheet) rs).getCell(0, 0);
Cell cc10 = ((jxl.Sheet) rs).getCell(1, 0);
Cell cc11 = ((jxl.Sheet) rs).getCell(1, 1);

if(c00.getType() == CellType.LABEL)
{
LabelCell labelc00 = (LabelCell)cc00;
strcc00 = labelc00.getString();
}
if(c10.getType() == CellType.NUMBER)
{
NumberCell numc10 = (NumberCell)cc10;
strcc10 = numc10.getValue();
}
if(c11.getType() == CellType.DATE)
{
DateCell datec11 = (DateCell)cc11;
strcc11 = datec11.getDate();
}

System.out.println("Cell(0, 0)" + " value : " + strcc00 + "; type : " + cc00.getType());
System.out.println("Cell(1, 0)" + " value : " + strcc10 + "; type : " + cc10.getType());
System.out.println("Cell(1, 1)" + " value : " + strcc11 + "; type : " + cc11.getType());

//在得到Cell对象后,通过getType()方法可以获得该单元格的类型,然后与API提供的基本类型相匹配,
//强制转换成相应的类型,最后调用相应的取值方法getXXX(),就可以得到确定类型的值。
//API提供了以下基本类型,与Excel的数据格式相对应,如下图所示:

//每种类型的具体意义,请参见Java Excel API Document。

//当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,
//以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要。参考如下代码片段:

//操作完成时,关闭对象,释放占用的内存空间
rwb.close();

}
catch (Exception e)
{
e.printStackTrace();
}

//Java Excel API提供了许多访问Excel数据表的方法,在这里我只简要地介绍几个常用的方法,
//其它的方法请参考附录中的Java Excel API Document。

//Workbook类提供的方法

//1. int getNumberOfSheets();
//获得工作薄(Workbook)中工作表(Sheet)的个数,示例:

jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
int sheets = rwb.getNumberOfSheets();

//2. Sheet[] getSheets();
//返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:

jxl.Workbook rwb2 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
Sheet[] sheets2 = (Sheet[]) rwb2.getSheets();

//3. String getVersion();
//返回正在使用的API的版本号,好像是没什么太大的作用。

jxl.Workbook rwb3 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
String apiVersion = rwb3.getVersion();

//Sheet接口提供的方法

//1) String getName();
//获取Sheet的名称,示例:

jxl.Workbook rwb4 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs = rwb4.getSheet(0);
String sheetName = rs.getName();

//2) int getColumns()
//获取Sheet表中所包含的总列数,示例:

jxl.Workbook rwb5 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs2 = rwb5.getSheet(0);
int rsColumns = rs2.getColumns();

//3) Cell[] getColumn(int column)
//获取某一列的所有单元格,返回的是单元格对象数组,示例:

jxl.Workbook rwb6 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs3 = rwb6.getSheet(0);
Cell[] cell = rs3.getColumn(0);

//4) int getRows()
//获取Sheet表中所包含的总行数,示例:

jxl.Workbook rwb7 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs4 = rwb7.getSheet(0);
int rsRows = rs4.getRows();

//5) Cell[] getRow(int row)
//获取某一行的所有单元格,返回的是单元格对象数组,示例子:

jxl.Workbook rwb8 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs5 = rwb8.getSheet(0);
Cell[] cell5 = rs5.getRow(0);

//6) Cell getCell(int column, int row)
//获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,
//这与通常的行、列组合有些不同。

jxl.Workbook rwb9 = jxl.Workbook.getWorkbook(new File("D:/user.xls"));
jxl.Sheet rs6 = rwb9.getSheet(0);
Cell cell6 = rs6.getCell(0, 0);

阅读全文

与javaexcel文件导入相关的资料

热点内容
msp430独立按键程序 浏览:592
如何固定表格数据的位数 浏览:544
编程猫项目分析的思路有哪些 浏览:927
编程能玩什么游戏 浏览:13
怎么用win10镜像 浏览:552
10岁没接触编程学什么程序好 浏览:375
jsselect必填 浏览:784
python学习编程需要什么基础 浏览:114
ug打开文件找不到 浏览:859
获取登录数据失败怎么解决 浏览:30
极迅加速没网络 浏览:766
京东代升级 浏览:488
开源筛选工具 浏览:840
cad怎么删除保存的文件 浏览:185
哪个app歌声可以下载 浏览:519
解压过的文件怎么打开 浏览:929
苹果4s怎么打开文件 浏览:710
别人拷了excel文件怎么删 浏览:736
微信收发文件查询系统异常 浏览:541
织梦幻灯片调用代码 浏览:126

友情链接