#64位机下,xls和xlsx文件用相同方法
library(RODBC)
con <- odbcConnectExcel2007("D:/R/RODBCxlsx") #64位机下方法
sqlTables(con) #查看该xlsx文件中有哪些表
# TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS
# 1 D:\\R\\RODBCxlsx <NA> 商品信息$ SYSTEM TABLE <NA>
# 2 D:\\R\\RODBCxlsx <NA> 补充说明$ SYSTEM TABLE <NA>
# 3 D:\\R\\RODBCxlsx <NA> 销售信息$ SYSTEM TABLE <NA>
table_test <- sqlFetch(con,"销售信息")
table_test
odbcClose(con)
VLOOKUP是一个查找函数,给定一个查找的目标,它就能从指定的查找区域中查找返回想要查找到的值。它的基本语法为:
VLOOKUP(查找目标,查找范围,返回值的列数,精确OR模糊查找)
下面以一个实例来介绍一下这四个参数的使用
例1:如下图所示,要求根据表二中的姓名,查找姓名所对应的年龄。
公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)
参数说明:
1 查找目标:就是你指定的查找的内容或单元格引用。本例中表二A列的姓名就是查找目标。我们要根据表二的“姓名”在表一中A列进行查找。
公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)
2 查找范围(VLOOKUP(A13,$B$2:$D$8,3,0) ):指定了查找目标,如果没有说从哪里查找,EXCEL肯定会很为难。所以下一步我们就要指定从哪个范围中进行查找。VLOOKUP的这第二个参数可以从一个单元格区域中查找,也可以从一个常量数组或内存数组中查找。本例中要从表一中进行查找,那么范围我们要怎么指定呢?这里也是极易出错的地方。大家一定要注意,给定的第二个参数查找范围要符合以下条件才不会出错:
A 查找目标一定要在该区域的第一列。本例中查找表二的姓名,那么姓名所对应的表一的姓名列,那么表一的姓名列(列)一定要是查找区域的第一列。象本例中,给定的区域要从第二列开始,即$B$2:$D$8,而不能是$A$2:$D$8。因为查找的“姓名”不在$A$2:$D$8区域的第一列。
B 该区域中一定要包含要返回值所在的列,本例中要返回的值是年龄。年龄列(表一的D列)一定要包括在这个范围内,即:$B$2:$D$8,如果写成$B$2:$C$8就是错的。
3 返回值的列数(B13 =VLOOKUP(A13,$B$2:$D$8,3,0))。这是VLOOKUP第3个参数。它是一个整数值。它怎么得来的呢。它是“返回值”在第二个参数给定的区域中的列数。本例中我们要返回的是“年龄”,它是第二个参数查找范围$B$2:$D$8的第3列。这里一定要注意,列数不是在工作表中的列数(不是第4列),而是在查找范围区域的第几列。如果本例中要是查找姓名所对应的性别,第3个参数的值应该设置为多少呢。答案是2。因为性别在$B$2:$D$8的第2列中。
4 精确OR模糊查找(VLOOKUP(A13,$B$2:$D$8,3,0) ),最后一个参数是决定函数精确和模糊查找的关键。精确即完全一样,模糊即包含的意思。第4个参数如果指定值是0或FALSE就表示精确查找,而值为1 或TRUE时则表示模糊。这里兰色提醒大家切记切记,在使用VLOOKUP时千万不要把这个参数给漏掉了,如果缺少这个参数默为值为模糊查找,我们就无法精确查找到结果了。
1、接下来,我们的任务是通过利用VLOOKUP函数来实现查找同学C的成绩。为此在单元格中输入“=VLOOKUP”,此时就会发现VLOOKUP包括三个参数和一个可选参数。
其中“lookup_value”是指要查找的值。
参数“table_array”是指搜索的区域,在此在除标题之后的整个数据区域。
第三个参数“col_index_num”是指整个函数返回单元格所在的列号。
2、最后以右括号结尾,并按回车键,就出现想要的结果啦。
分析工具库。
获取案例分析需要的excel数据表需要从分析工具库中获得,它是是一个Excel加载项,安装Microsoft Office或Excel后即可使用该程序。
给你个网址,bbscsdnnet/topics/390824686 自己去看看。就是下面的内容:
ASPNET中Excel数据批量导入导出SQL Server
C# code
protected void btnUpload_Click(object sender, EventArgs e) { DataSet ds = GetExcelData(); InsertDB(ds); } /// <summary> /// 该方法实现从Excel中导出数据到DataSet中,其中filepath为Excel文件的绝对路径,sheetname为表示那个Excel表,此用Sheet1; /// </summary> /// <param name="ds">ds</param> private void InsertDB(DataSet ds) { SqlConnection _con = new SqlConnection(@"Data Source=STKWX028\SQLEXPRESS;Initial Catalog=Library;Integrated Security=True"); SqlCommand cmd = new SqlCommand(); cmdConnection = _con; StringBuilder sb = new StringBuilder(); if (dsTables[0]RowsCount > 0) { for (int i = 0; i < dsTables[0]RowsCount; i++) { sbAppend(" INSERT INTO bookInfo(bookID,bookName,author,publisher,price,readerID,readerType,bookStatus) VALUES('"); sbAppend(dsTables[0]Rows[i]ItemArray[0]ToString() + "','"); sbAppend(dsTables[0]Rows[i]ItemArray[1]ToString() + "','"); sbAppend(dsTables[0]Rows[i]ItemArray[2]ToString() + "','"); sbAppend(dsTables[0]Rows[i]ItemArray[3]ToString() + "','"); sbAppend(dsTables[0]Rows[i]ItemArray[4]ToString() + "','"); sbAppend(dsTables[0]Rows[i]ItemArray[5]ToString() + "','"); sbAppend(dsTables[0]Rows[i]ItemArray[6]ToString() + "','"); sbAppend(dsTables[0]Rows[i]ItemArray[7]ToString() + "' ) "); cmdCommandText = sbToString(); } } _conOpen(); int j = cmdExecuteNonQuery(); _conClose(); if (j > 0) { lblMessageText = "Insert into DB table Sucessfully!"; } } /// <summary> /// get data source from excel file /// </summary> /// <returns>dataset ds</returns> private DataSet GetExcelData() { DataSet ds = new DataSet(); string filePath = inputFilePostedFileFileName; string connStr03 = "Provider=MicrosoftJetOLEDB40;Data Source=" + filePath + ";Extended Properties=Excel 80;"; ; string connStr07 = "Provider=MicrosoftACEOLEDB120;Data Source=" + filePath + ";Extended Properties='Excel 120;HDR=YES'"; string queryStr = "SELECT FROM [Sheet1$]"; OleDbConnection conn03 = new OleDbConnection(connStr03); OleDbConnection conn07 = new OleDbConnection(connStr07); if (inputFileHasFile) { string fileExt = SystemIOPathGetExtension(inputFileFileName); if (fileExt == "xls") { OleDbDataAdapter myAdapter = new OleDbDataAdapter(queryStr, conn03); myAdapterFill(ds); } else if (fileExt == "xlsx") { OleDbDataAdapter myAdapter = new OleDbDataAdapter(queryStr, conn03); myAdapterFill(ds); } else { lblMessageText = "The file is not exist!"; } } return ds; }
最近由于经常要用到Excel,需要根据Excel表格中的内容对一些apk进行处理,手动处理很麻烦,于是决定写脚本来处理。首先贴出网上找来的读写Excel的脚本。
1读取Excel(需要安装xlrd):
123456789101112131415161718192021222324#-- coding: utf8 --import xlrd fname = "reflectxls"bk = xlrdopen_workbook(fname)shxrange = range(bknsheets)try: sh = bksheet_by_name("Sheet1")except: print "no sheet in %s named Sheet1" % fname#获取行数nrows = shnrows#获取列数ncols = shncolsprint "nrows %d, ncols %d" % (nrows,ncols)#获取第一行第一列数据cell_value = shcell_value(1,1)#print cell_value row_list = []#获取各行数据for i in range(1,nrows): row_data = shrow_values(i) row_listappend(row_data)2写入Excel(需安装pyExcelerator)
12345678from pyExcelerator import w = Workbook() #创建一个工作簿ws = wadd_sheet('Hey, Hades') #创建一个工作表wswrite(0,0,'bit') #在1行1列写入bitwswrite(0,1,'huang') #在1行2列写入huangwswrite(1,0,'xuan') #在2行1列写入xuanwsave('minixls') #保存3再举个自己写的读写Excel的例子
读取reflectxls中的某些信息进行处理后写入minixls文件中。
1234567891011121314151617181920212223242526272829303132333435363738394041424344#-- coding: utf8 --import xlrdfrom pyExcelerator import w = Workbook()ws = wadd_sheet('Sheet1') fname = "reflectxls"bk = xlrdopen_workbook(fname)shxrange = range(bknsheets)try: sh = bksheet_by_name("Sheet1")except: print "no sheet in %s named Sheet1" % fname nrows = shnrowsncols = shncolsprint "nrows %d, ncols %d" % (nrows,ncols) cell_value = shcell_value(1,1)#print cell_value row_list = []mydata = []for i in range(1,nrows): row_data = shrow_values(i) pkgdatas = row_data[3]split(',') #pkgdatassplit(',') #获取每个包的前两个字段 for pkgdata in pkgdatas: pkgdata = ''join((pkgdatasplit(''))[:2]) mydataappend(pkgdata) #将列表排序 mydata = list(set(mydata)) print mydata #将列表转化为字符串 mydata = ','join(mydata) #写入数据到每行的第一列 wswrite(i,0,mydata) mydata = [] row_listappend(row_data[3])#print row_list wsave('minixls')4现在我需要根据Excel文件中满足特定要求的apk的md5值来从服务器获取相应的apk样本,就需要这样做:
123456789101112131415161718192021222324252627282930313233#--coding:utf8--import xlrdimport osimport shutil fname = "/excelnamexls"bk = xlrdopen_workbook(fname)shxrange = range(bknsheets)try: #打开Sheet1工作表 sh = bksheet_by_name("Sheet1")except: print "no sheet in %s named Sheet1" % fname#获取行数nrows = shnrows#获取列数ncols = shncols#print "nrows %d, ncols %d" % (nrows,ncols)#获取第一行第一列数据cell_value = shcell_value(1,1)#print cell_value row_list = []#range(起始行,结束行)for i in range(1,nrows): row_data = shrow_values(i) if row_data[6] == "HXB": filename = row_data[3]+"apk" #print "%s %s %s" %(i,row_data[3],filename) filepath = r"/1/"+filename print "%s %s %s" %(i,row_data[3],filepath) if ospathexists(filepath): shutilcopy(filepath, r"/myapk/")补充一个使用xlwt3进行Excel文件的写 *** 作。
1234567891011121314151617181920212223242526import xlwt3 if __name__ == '__main__': datas = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h']]#二维数组 file_path = 'D:\\testxlsx' wb = xlwt3Workbook() sheet = wbadd_sheet('test')#sheet的名称为test #单元格的格式 style = 'pattern: pattern solid, fore_colour yellow; '#背景颜色为** style += 'font: bold on; '#粗体字 style += 'align: horz centre, vert center; '#居中 header_style = xlwt3easyxf(style) row_count = len(datas) col_count = len(datas[0]) for row in range(0, row_count): col_count = len(datas[row]) for col in range(0, col_count): if row == 0:#设置表头单元格的格式 sheetwrite(row, col, datas[row][col], header_style) else: sheetwrite(row, col, datas[row][col]) wbsave(file_path)输出的文件内容如下图:
注:以上代码在Python 3x版本测试通过。
好了,python *** 作Excel就这么!些了,简单吧
以上就是关于r语言中怎么读取excel数据全部的内容,包括:r语言中怎么读取excel数据、python怎么从excel读取数据、从哪里可以获取案例分析需要的excel数据表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)