r语言中怎么读取excel数据

r语言中怎么读取excel数据,第1张

#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数据表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9820288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存