通过管道及XMLRPC从Excel里使用R
用Excel进行相关性与回归分析分析

④标准误差:用来衡量拟合程度的大小,也用于计 算与回归相关的其他统计量,此值越小,说明拟合 程度越好。
⑤观测值:用于估计回归方程的数据的观测值个数。
(2)方差分析表
方差分析表的主要作用是通过F检验来判断回归模
型的回归效果。表中“回归分析”行计算的是估 计值同均值之差(-)的各项指标;“残差”行是 用于计算每个样本观察值与估计值之差(-)的各 项指标;“总计”行用于计算每个值同均值之差 (-)的各项指标。第二列df是自由度,第三列SS 是离差的平方和,第四列MS是均方差,它是离差
用Excel进行回归分析
用Excel进行回归分析
用Excel进行回归分析
用Excel进行回归分析
基本形式
y cebx
两边取对数
对截距反对 数
ln( y) ln(c) bx
对因变量取 对数
用Excel进行回归分析
用Excel进行回归分析
用Excel进行回归分析
基本形式
y a b ln(x)
②R Square(复测定系数R2):用来说明自变
量解释因变量变差的程度,以测定因变量y的拟 合效果。
回归分析工具的输出解释
③Adjusted R Square(调整复测定系数R2):仅用
于多元回归才有意义,它用于衡量加入独立变量后 模型的拟合程度。当有新的独立变量加入后,即使
这一变量同因变量之间不相关,未经修正的R2也要 增大,修正的R2仅用于比较含有同一个因变量的各
单击任一空白单元格,输入 “=TRIMMEAN(B2:B11,1/10)”, 回车后得截尾平均数为14.1
7.全距
单击任一空白单元格, 输入“=MAX(B2:B11)-MIN(B2:B11)”, 回车后得全距为5。
用R语言处理Excel数据

用R语言处理Excel数据和LP说起我在琢磨R,这东西有很强的数据处理能力。
LP在她公司的财务部门工作。
我告诉她如果有什么数据处理分析类的工作可以让我给她写程序做,原来利用Excel手工做的一些事情,现在或许可以较方便地用R来处理。
LP说好啊,她正在做固定资产清理,有一个包含几万条记录的Excel表,现在需要分发到各个下级单位分别补充信息、盖章确认、反馈汇总。
手工拆成上百个文件比较费劲,而让各个单位筛选填写自己的数据又担心有操作错误出现遗漏。
如果程序可以实现自动拆分的功能就好了。
我想起R的数据输出输入功能有xlsx等包,而数据筛选又是很简单的事情,于是马上说可以做。
我盘算着数据文件应该是一个标题行和几万个数据行组成,这样我只要读入xlsx文件,然后根据单位字段筛选出子集,再输出到不同的文件中,这样就大功搞成了。
一、实际需求打开她的工作xlsx文件,发现情况和所想的有区别。
1.文件上方有一个旋转透视表,用于汇总数据结果。
这个表在每个分拆开的文件中都要有。
2.子集不是从第一行开始,而是从旋转透视表的下方指定某行开始。
数据要含表头。
3.拆分时要按照一级单位建立目录(十几个),并在一级单位的目录中按照二级单位生成文件(上百个)。
这样就可以按照一级单位的目录下发,再由一级单位下发二级单位组织填写。
大致文件的头部截图如下:按照第5列(E列)建立目录,按照第6列(F列)在对应目录下建立文件。
这比预想的复杂一点点,不过现实需求应该是复杂的。
我说我试试看能够实现多少。
二、寻找合适的函数、测试、实现的过程1.安装加载xlsx程序包。
2.读入数据使用read.xlsx()函数读入数据。
发现几个问题:读入速度较慢、读到最后java 报崩溃,另外,如果只读入少量数据进行测试时,发现读入的汉字为乱码,用write.xlsx()生成xlsx文件时,还是乱码。
同事建议可以调高java的heap数值,但是我想这点数据就要调整heap值,那更多的数据岂非不用玩了?既然只有一个sheet,我于是将xlsx文件转存为csv文件,作为文本形式,用read.table()函数读入。
Excel宏命令在管段材料汇总中的应用

Excel宏命令在管段材料汇总中的应用【摘要】在石油化工生产领域的工艺管道安装设计过程中,管段材料的统计、汇总、修改、调整、编辑、出版是一项十分繁琐冗长的设计任务,而整个设计过程留给管道专业的设计周期又是极其有限的;在项目设计过程中一般还总会因其他专业的条件修改、业主的要求或者项目的设计深度不同而牵涉到管道材料变更:如管道选型、阀门管件变更、应用标准修改等,因而修改管段材料表内容及汇总材料数量是一项极其繁琐细致的工作,但其最终结果可能对工程造价造成不可估量的影响。
笔者以多年来的手工汇料经验,借鉴行业内的Excel汇料思想,以公司现有的管段表结构为对象,编制了一套管段材料汇总的宏命令,极大地提高了汇料质量和节约了汇料时间,也为管道专业提供了极大便利。
【关键词】管段表;材料汇总;ExcelAbstract:In petrochemical production areas of piping design process, the pipe materials, consolidate, and modification, statistical adjustment, editing and publishing is a arduous design task, and the whole design process to pipe professional design cycle is extremely short; In program design process normally for other professional conditions will change, the owner of the requirements of the project or design different depth and involves to the pipeline material change: such as pipe fitting, valve selection change, use standard modify etc, thus modify pipeline section material list contents and collect material quantity is a very complicated and meticulous work, but the end result of engineering cost may cause inestimable influence of. Based on years of manual collect material for reference in the industry of Excel collect material theory, the company’s existing pipeline section table structure for object, compil ed a casing section material summary of macros, greatly enhancing the remit material quality and saving the remit material time, also for professional provides tremendous pipeline convenienceKey Words: pipe section form; materials collection引言随着现代社会高速发展的需要,在石油化工、精细化工等生产领域的现代化生产过程中,一项先进理念要转化为生产力,首先必须通过广大工程设计人员的工程设计,再由工程施工单位进行工程施工,质量部门予以验收,然后才能爆发出勃勃生机。
Csharp进行xls文件操作方法

Csharp进行xls文件操作方法Excel对象微软的Excel对象模型包括了128个不同的对象,从矩形,文本框等简单的对象到透视表,图表等复杂的对象.下面我们简单介绍一下其中最重要,也是用得最多的四个对象。
(1) Application对象。
Application对象处于Excel对象层次结构的顶层,表示Excel自身的运行环境。
(2) Workbook对象。
Workbook对象直接地处于Application对象的下层,表示一个Excel工作薄文件。
(3) Worksheet对象。
Worksheet对象包含于Workbook对象,表示一个Excel工作表。
(4) Range对象。
Range对象包含于Worksheet对象,表示Excel工作表中的一个或多个单元格。
C#中的受管代码和非受管代码在.NET公用语言框架内运行的程序为受管代码。
受管代码在程序中所有类型都受到严格检查,没有指针,对内存的管理完全由运行系统控制。
受控状态下,编写程序更为容易,且更少出错,我们可以花更多的时间在解决实际问题上而不是在计算机语言问题上。
相对而言,那些在.NET框架外运行的程序为非受管代码。
比如:COM组件、ActiveX组件、Win32 API函数、指针运算等。
C#编程中在某些特定情况下,需要运用非受管代码,例如,要利用一个成熟的COM组件,或者调用一个API函数,或者用指针去编写实时/高效程序等。
Visual C#中调用Excel的COM组件一个.NET组件事实上是一个.NET下的DLL,它包含的不仅是运行程序本身,更重要的是包含这个DLL的描述信息(Meta Data,即元数据),而一个COM组件是用其类库(TLB)储存其描述信息。
这些COM组件都是非受管代码,要在Visual C#中使用这些非受管代码的COM组件,就必须把他们转换成受管代码的.NET组件。
所以在用Visual C#调用Excel表格之前,必须完成从COM组件的非受管代码到受管代码的类库的转换。
用excel解析XML文档进行网站数据分析

较多的网站会选择将XML作为数据交换的文档,原因在于XML可以跨平台工作的,它包括了从XML文档中获取数据和将数据转化为XML文档两个方面。
excel 的VBA就能完成这样的工作,通过建立映射既能从XML中获取数据并在excel中显示,也可以通过映射将工作表中的数据转化为XML文档。
这极大地方便了站长们对于站内一些数据的管理、统计和分析。
接下来,我就以图文详细解说的方式和大家分享excel处理XML文档的具体过程。
数据分析通常不是从XML文件中直接查看数据,而是通过第三方高级应用软件或者平台导出数据,再转换成表格来读取XML文件数据。
其实除了专业软件外,大家常用且顺手的excel就能很好地完成读取过程。
(1)打开XML文档用工作簿的OpenXml的方法打开XML文档,当工作簿打开或者导入XML文档的时候会产生一个映射。
例如用如下的excel中的VBA代码将位于D盘下的“网站注册用户信息.xml”文件用excel 2007打开并产生映射。
运行结果如下:不孕不育的症状这样的excel数据表格就方便站长们进行按时间排序、按登陆次数统计、近期注册用户数量等数据的统计分析,并能较容易地用柱形图等进行形象的对比。
这有利于站长们更细致地分析网站注册用户的信息并进行筛选分析。
(2)追加数据在一般情况下,导入数据是先删除原有的数据再写入新的数据,为了避免删除原有数据,需要更改映射属性。
例如用如下的excel中的VBA代码进行追加新数据。
先在工作表中放置一个按钮,命名为“导入新注册用户数据”,当使用者单击该按钮的时候会出现打开对话框,选择XML文件,如果工作表映射不存在,自动建立一个“网站注册用户信息”的映射,并将制定的文件内容导入,否则就将新文件的内容追加到工作表中。
excel的VBA代码如下不孕不育的症状点击“导入新注册用户数据”的按钮重复导入“网站注册用户信息.xml”文档后,运行结果如下所示:综上所述,利用excel的VBA导入XML文档数据,用excel表格进行统计分析,更能让站长们得心应手地分析网站运营相关数据,时时掌握网站运行的相关指标。
使用R语言与Excel表格进行交互生成自动化报告

使用R语言与Excel表格进行交互生成自动化报告1. 选择合适的库对于读取和写入Excel文件,有几个R包可以使用:- readxl:非常适合读取.xlsx文件。
- writexl:非常适合写入.xlsx文件。
- openxlsx:提供了更多高级功能,如格式化和多个工作表。
- xlsx:功能强大,支持旧版Excel文件格式。
2. 读取Excel文件使用readxl包可以轻松读取Excel文件:代码:library(readxl)# 读取Excel文件data <- read_excel("path/to/your/file.xlsx")3. 写入Excel文件使用writexl包可以轻松写入Excel文件:代码:library(writexl)# 写入Excel文件write_xlsx(data, "path/to/your/output.xlsx")4. 处理多个工作表如果你需要处理多个工作表,openxlsx包是一个好选择:代码:library(openxlsx)# 创建一个新的工作簿wb <- createWorkbook()# 添加一个工作表addWorksheet(wb, "Sheet 1")# 写入数据writeData(wb, "Sheet 1", data)# 保存工作簿saveWorkbook(wb, "要保存的文件路径", overwrite = TRUE)5. 数据清洗在将数据导入R后,通常需要进行一些数据清洗工作,如处理缺失值、异常值或格式问题:代码:# 处理缺失值data$column[is.na(data$column)] <- 0# 转换数据类型data$column <- as.numeric(data$column)6. 数据筛选和转换使用dplyr包可以方便地进行数据筛选、排序和转换:代码:library(dplyr)# 筛选数据filtered_data <- filter(data, condition_column > threshold)# 选择特定的列selected_data <- select(data, column1, column2)# 汇总数据summary_data <- data %>%group_by(group_column) %>%summarise(mean_value = mean(target_column))7. 数据可视化这里推荐ggplot2包:代码:library(ggplot2)# 创建一个简单的柱状图ggplot(data, aes(x = factor_column, y = numeric_column)) +geom_bar(stat = "identity")8. 自动化报告使用RMarkdown可以创建动态报告,它支持将R代码、文本和输出整合到一个文档中,并可以导出为HTML、PDF或Word格式。
利用OpenXML向Excel单元格插入内容

WorksheetPart worksheetPart = InsertWorksheet(spreadSheet.WorkbookPart);
// Insert cell A1 into the new worksheet.
Cell cell = InsertCellInWorksheet("A", 1, worksheetPart);
XML
<?xml version="1.0" encoding="UTF-8" ?>
<worksheet xmlns="/spreadsheetml/2006/main">
<sheetData>
<row r="1">
<c r="A1">
using System.Linq;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
获取SpreadsheetDocument对象
if(shareStringPart.SharedStringTable ==null)
{
shareStringPart.SharedStringTable =newSharedStringTable();
}
inti = 0;
// Iterate through all the items in the SharedStringTable. If the text already exists, return its index.
R 数据的导入和导出

R 数据的导入和导出译者前言不能期望一个软件可以做所有的事情1。
R 也不例外。
因此,R 需要和其它东西协作。
包括我们人类,需要我们输入数据,导出数据。
包括我们的其它软件,Excel,SPSS,等等,数据格式都是特异的,需要R 特别处理。
包括我们的数据库系统,R 不是用来管理数据的,所以需要专业的数据库帮忙。
也包括不同机器间,上面编译的R 也是需要交换数据。
这一册文档就是描述这些事情的。
R 的主要目的就是分析数据。
虽然,你可以用它来处理文档,画个奥运会的鸟巢,R 的主要目的还是数据分析。
这是专业化个性化的时代,特色取胜。
这个文档在几年前就写了一些。
很实用的一个文档。
开发人员可以大致了解R 和其它软件大致的通讯情况,非开发人员至少可以了解,R 通过包能直接读取Excel表格。
已经是凌晨了,不多写了。
任何问题和建议可以给Email!感谢身边的朋友!丁国徽Email:****************2008年1月6日Previous: Words from the Translator, Up: Notes致谢手册中关系数据库的内容部分基于Douglas Bates 和Saikat DebRoy早期写的一个手册。
本手册主要由Brian Ripley 编写。
这里用到很多扩展包都是由自愿者贡献。
这里提到的包以及主要作者如下,CORBA Duncan Temple Langforeign Thomas Lumley, Saikat DebRoy, Douglas Bates, DuncanMurdoch and Roger Bivandhdf5Marcus Danielsncdf David Piercencvar Juerg SchmidlirJava Simon UrbanekRMySQL David James and Saikat DebRoyRNetCDF Pavel MichnaRODBC Michael Lapsley and Brian RipleyRSPerl Duncan Temple LangRSPython Duncan Temple LangSJava John Chambers and Duncan Temple LangXML Duncan Temple Lang1.1 Imports 导入导入R 的数据中最容易的格式是简单的文本文件。
采用excel绘制R

采用excel绘制R论文摘要:使用excel绘制R-H曲线(适用于office2007-2010)-论文网论文关键词:使用,绘制,曲线,适用于可选性曲线是评价物料可选性的最基本的曲线,该曲线包含了物料分选的难易与分选理论指标的所有信息,在日常生产与设计中R-H曲线(可选性曲线)的应用十分广泛,但是如此复杂的曲线假如用手工去绘制将是非常浪费时间与精力的,利用电子表格软件进行原煤可选性数据计算十分方便快捷,也为选矿工作者广泛使用。
但是通过长时间的研究发现,在各类绘制方法都不尽全面与完善。
文章通过实例介绍了如何利用Excel软件完整的绘制出规范准确的原煤可选性曲线的方法。
一、浮沉实验资料综合表:其中R-H曲线一共包含五条基本的曲线,它们分别是①浮物曲线,也称β曲线;②沉物曲线,也称θ曲线;③灰分特性曲线(基元灰分曲线)也称λ曲线;④密度曲线,也称δ曲线;⑤邻近密度物含量曲线,也称ε曲线。
在坐标纸上绘出直角坐标,下面的横坐标为灰分;上面的横坐标为密度;左面的纵坐标为浮物产率,方向由上而下增值;右面的纵坐标为沉物产率,方向由下而上增值。
由于曲线的条数比较多,设计的坐标轴也比较多,Excel不可能完全按照我们的意愿进行绘制,因此我们务必对我们的数据进行一些变换。
并得到下表:二、浮沉实验综合表通过对浮沉实验的数据进行分析我们能够做出粉尘实验综合表如下图所示:三、对数据进行转换由于Excel的图标绘制中只能有要紧坐标轴与次要坐标轴两个坐标轴同时要紧坐标轴与次要坐标轴不能进行混合使用,因此这要求我们务必对数据进行转换。
首先是浮煤曲线与灰分特征曲线,它们都在主坐标轴上因此不需要进行坐标变换。
但是灰分特征曲线的画法要求我们务必对其数据进行进一步的处理,我们将浮物累计的数据的第一组数据的二分之一,作为转化数据的第一组数据,将原数据的第一组数据与第二组数据与的二分之一加上原第一组数据,得到第二组数据,按相同的办法得到整组的转化数据,即第第10栏数据。
MFC向Excel读写数据详细方法

MFC读写Excel详细步骤准备工作:打开开发环境VC或VS新建一个基于对话框的简单工程;通过类向导添加类-->类型库中的MFC类打开创建类对话框选择文件,位置编辑框填入Excel.exe的详细目录,可以通过浏览选择,在接口下方选择_Application(应用),_Workbook(视窗),Workbooks(整个视窗),Worksheets(单个表单),Worksheets(整个表单),Range(元素集合)六个基本的接口并生成类。
选择接口后单击向右的单箭头即可,双箭头是生成所有接口的类;生成类之后将添加的几个类的头文件中的#import "E:\\Microsoft Office\\Office14\\EXCEL.EXE" no_namespace注释掉,加上#include<afxdisp.h>。
然后编译,出现下面这俩个错误;点击DialodBoxA找到错误位置将DialodBox改为_DialodBox;再编译,没有错误;warning C4003: “DialogBoxA”宏的实参不足error C2059: 语法错误:“,”在要操作Excel类的CPP文件中包含头文件:准备工作完成。
向Excel写数据:CFileDialog dlg(FALSE, ".xlsx",NULL,OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"Microsoft ExcelFiles(*.xls)|*.xls|Microsoft Excel Files(*.xlsx)(推荐)|*.xlsx|All Files (*.*)|*.*||");dlg.m_ofn.lpstrTitle ="保存到Excel";if (dlg.DoModal() == IDOK){//获取路径CString strFileName=dlg.GetPathName();CWorkbooks books;CWorkbook book;CApplication app;CWorksheets sheets;CWorksheet sheet;CRange range;CMyFont font;CRange cols;COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);if (!app.CreateDispatch("Excel.Application")){this->MessageBox("无法创建Excel应用!");return;}books=app.get_Workbooks();book=books.Add(covOptional);sheets=book.get_Worksheets();sheet=sheets.get_Item(COleVariant((short)1));//获得(A,1)(B,1)两个单元格range=sheet.get_Range(COleVariant("A1"),COleVariant("B6"));//设置公式“=RAND()*100000”range.put_Formula(COleVariant("=RAND()*1000"));//选择整列,并设置宽度为自适应cols = range.get_EntireColumn();cols.AutoFit();//设置字体为粗体font = range.get_Font();font.put_Bold(COleVariant((short)TRUE));//设置数字格式为货币型//range.put_NumberFormat(COleVariant("$0.00"));CString Range327[]={"C1","C2","C3","C4","C5","C6"};CString fileinfo[]={"齿形","齿向","齿距","左齿面","右齿面","径跳"};for(int i=0;i<6;i++){range = sheet.get_Range(COleVariant(Range327[i]),COleVariant(Range327[i]));range.put_Value2(COleVariant(fileinfo[i]));}/*//获得坐标为(C,2)单元格 //显示Excel表range = sheet.get_Range(COleVariant("C1"), COleVariant("F10"));//设置单元格内容位Hello Excelrange.put_Value2(COleVariant("哈尔滨精达测量仪器有限公司"));*///选择整列,并设置宽度为自适应cols = range.get_EntireColumn();cols.AutoFit();//显示列表控件//app.put_Visible(TRUE);//允许其他用户控制Excel,否则Excel、将一闪而过//app.put_UserControl(TRUE);book.SaveCopyAs(COleVariant(strFileName));book.put_Saved(true);range.ReleaseDispatch();font.ReleaseDispatch();cols.ReleaseDispatch();sheet.ReleaseDispatch();sheets.ReleaseDispatch();book.ReleaseDispatch();books.ReleaseDispatch();//以下关闭应用的两条代码结合使用且顺序不能反,否则无法关闭进程app.Quit();app.ReleaseDispatch();}读取Excel中的数据:UpdateData(TRUE);str327="";UpdateData(FALSE);CApplication app;CWorkbooks books;CWorkbook book;CWorksheets sheets;CWorksheet sheet;CRange range;CRange oCurCell;CString strFileName1;CFileDialog dlg(TRUE, ".xlsx",NULL,OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"Microsoft ExcelFiles(*.xls)|*.xls|Microsoft Excel Files(*.xlsx)|*.xlsx|All Files (*.*)|*.*||");dlg.m_ofn.lpstrTitle = "打开Excel文件" ;int nRetVal = dlg.DoModal();if ( nRetVal == IDOK ){if (!app.CreateDispatch( _T( "Excel.Application" ), NULL ) ){::MessageBox( NULL, _T( "创建Excel服务失败!" ), _T( "错误提示!" ), MB_OK | MB_ICONERROR);return;//exit(1);}//设置为显示app.put_Visible(FALSE);books.AttachDispatch( app.get_Workbooks(), TRUE );LPDISPATCH lpDisp = NULL;COleVariant covTrue((short)TRUE);COleVariant covFalse((short)FALSE);COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);// 打开文件CString strFilePath=dlg.GetPathName();strFileName1=strFilePath;//CString strFilePath="G:\\研发人员名单2016.xls";lpDisp = books.Open( strFilePath,_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing) );// 获得活动的WorkBook( 工作簿 )book.AttachDispatch( lpDisp, TRUE );// 获得活动的WorkSheet( 工作表 )sheet.AttachDispatch( book.get_ActiveSheet(), TRUE );// 获得使用的区域Range( 区域 )range.AttachDispatch( sheet.get_UsedRange(), TRUE );// 获得使用的行数long lgUsedRowNum = 0;range.AttachDispatch( range.get_Rows(), TRUE );lgUsedRowNum = range.get_Count();// 获得使用的列数long lgUsedColumnNum = 0;range.AttachDispatch( range.get_Columns(), TRUE );lgUsedColumnNum = range.get_Count();// 读取Sheet的名称CString strSheetName = sheet.get_Name();//得到全部Cells,此时,CurrRange是cells的集合range.AttachDispatch( sheet.get_Cells(), TRUE );// 遍历整个Excel表格CStringArray* arrayStr;arrayStr = new CStringArray[lgUsedRowNum];for ( int i = 0; i < lgUsedRowNum; )//遍历行{for ( int j = 1; j <= lgUsedColumnNum; )//遍历列{oCurCell.AttachDispatch( range.get_Item( COleVariant( (long)(i + 1)), COleVariant( (long)j ) ).pdispVal, TRUE );VARIANT varItemName = oCurCell.get_Text();CString strItemName;strItemName = varItemName.bstrVal;// AfxMessageBox( strItemName );// 判断是否是合并的单元格VARIANT varMerge = oCurCell.get_MergeCells();CStringPosInfo1[]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S" ,"T"};CStringPosInfo2[]={"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17" ,"18","19","20"};if ( varMerge.boolVal == -1 ){AfxMessageBox( PosInfo1[j-1]+PosInfo2[i]+"是合并的单元格!" );}// else if ( varMerge.boolVal == 0 )// {// AfxMessageBox( _T( "不是合并的单元格!" ) );// }arrayStr[i].Add( strItemName );j++;}i++;}if(lgUsedColumnNum*lgUsedRowNum>=300){MessageBox("文件过大,存储空间不足,无法读取!");goto LLL;}CString strTempValue[20][20];for ( int i = 0; i < lgUsedColumnNum; i++)//遍历列{for (int j = 0; j < lgUsedRowNum; j++)//遍历行{strTempValue[i][j]=arrayStr[j].GetAt(i);}}// 释放二维数组delete[] arrayStr;/********************************************************************************** ******************///这里设置了字符串类型,应该还能设置其它类型参数,比如说整型。
在 Excel 2003 中导入 XML 映射、XML 列表和动态图表源

在Excel 2003 中导入XML 映射、XML 列表和动态图表源发布日期: 11/12/2004 |更新日期: 11/12/2004John R. DurantMicrosoft Corporation适用于:Microsoft ® Office Excel 2003摘要:Web 文章Web Queries and Dynamic Chart Data in Microsoft®Excel 2002演示了如何使用Web 查询将数据导入到Microsoft®Excel 2002 中,然后创建一个可以动态响应源数据更改的图表。
本文介绍Microsoft® Office Excel 2003 如何取得相同的结果,而只使用少量的代码、较少的繁琐以及具有更大的潜力。
与此同时,您将更深入地了解Excel 2003 的XML 功能,最重要的是XML 映射、XML 列表、用于导入XML 的新增例程,以及如何使用动态填充的XML 列表作为图表的数据源。
本页内容业务方案Excel 2003 中的XML 映射Excel 列表将XML 数据导入Excel动态图表源小结业务方案假设某个销售经理会定期查看销售数据。
她要指定一个日期范围,然后合计销售数据。
特别是,她希望查看指定范围内按天总结的销售数字。
她希望在看到原始数据的同时也可以看到显示指定日期范围内的总计销售趋势的图表。
针对她的每个要求创建显式报表似乎不切实际。
为此,必须有人详细审查输入数据,然后为组织内可能存在的大量方案创建独立的电子表格报表。
这样的话,开发人员和IT 员工的负担就非常大,尤其是考虑到组织内并不只有一个部门的销售经理具有这种要求。
更好的方法是使Excel 电子表格可以自适应提供销售经理所需的各种报表,同时这些报表可以被其他部门的销售经理重复使用,并根据他们的相似需要进行调整。
本文说明如何使用Microsoft® Office Excel 2003 中的功能来导入数据,以及将图表动态绑定到数据。
巧用EXCEL求解内部收益率

巧用EXCEL求解内部收益率作者:荆全忠来源:《教育教学论坛》 2015年第15期荆全忠(中国矿业大学(北京)管理学院,北京100083)摘要:内部收益率(IRR)是进行项目投资决策的重要依据,使用非常广泛。
传统的计算内部收益率的方法,如插值法、迭代法、趋势逼近法等,存在计算工作量大、精度不高、难以掌握等缺点。
常用的办公软件Excel提供的“单变量求解”工具和“IRR”函数都可用于求解内部收益率,要比传统方法简便快捷,其中IRR函数适合于实际工作,单变量求解更适于教学练习使用。
关键词:内部收益率;EXCEL;单变量求解;IRR函数中图分类号:G642.41 文献标志码:A 文章编号:1674-9324(2015)15-0146-03一、引言在“企业管理”或“财务管理”课程中,一般都会讲到项目投资决策的一个重要指标:内部收益率(internalrate of return,IRR),又称内含报酬率,它是使投资项目的净现值等于零时的折现率。
内部收益率反映了投资项目的真实报酬,是进行项目评价、投资决策时的重要依据,目前越来越多的企业使用该项指标对投资项目进行评价[1]。
因此内部收益率的计算就显得非常重要。
内部收益率的计算涉及一元高次方程的求解、没有根的一般解析式。
在课堂教学中通常采用“插值法”计算内部收益率,这是求解内部收益率的传统方法。
但是由于这种方法计算量比较大,加上要查“复利系数表”,非常烦琐,而且难以保证精度,尤其是当备选方案多、分期投资、每年收益额不等的时候,用手工计算内部收益率的工作量非常大,不利于学生计算练习和日常使用。
如何才能方便快捷地计算内部收益率?人们对此进行了广泛研究,提出了不少独创方法,比如泰勒展式趋近法[2]、黄金分割法[3]、微分法[4]、Aitken加速迭代法[5]、非线性迭代法[6]、牛顿迭代法[7]、快速逼近法[8]、斐波那契法[9]等,还有学者为此开发出了计算机程序[9,10]。
利用Excel构建投资项目内部收益率敏感性分析模型

利用Excel构建投资项目内部收益率敏感性分析模型[摘要] 文章介绍了利用Excel构建投资项目内部收益率敏感性分析模型的步骤和方法,以及如何利用该模型进行投资项目内部收益率的敏感性分析。[关键词] Excel;投资项目;内部收益率;敏感性分析在进行固定资产投资决策时,如果是在贴现率和未来现金流量确定的条件下,利用Excel的IRR函数(内部收益率函数)即可直接求出投资项目的内部收益率,并可据此判断投资项目的可行性。而实际上,固定资产投资项目涉及的时间较长,对未来收益和成本很难准确预测,投资活动中充满了不确定性或风险,项目投产后所带来的未来现金流量只是对未来可能发生结果的一种估计和预测,而不是未来实际发生的结果。因此,在投资决策中,应充分考虑到风险因素。敏感性分析是固定资产投资决策中常用的一种重要的分析方法,用来衡量当投资方案中某个因素发生了变动时,对该方案预期结果的影响程度。本文将介绍利用Excel构建投资项目内部收益率敏感性分析模型的步骤和方法,以及如何利用该模型进行投资项目内部收益率的敏感性分析。一、投资项目内部收益率敏感性分析模型构建的投资项目内部收益率敏感性分析模型,如图1所示。图1 投资项目内部收益率敏感性分析模型二、构建投资项目内部收益率敏感性分析模型的步骤对投资项目内部收益率的敏感性进行分析,可以利用Excel构建如图1所示的敏感性分析模型,分别进行多因素变动和单因素变动对内部收益率的影响分析。但需要注意的是,当要分析单因素变动对内部收益率的影响时,内部收益率的计算是一件很麻烦的事,因为当投资项目寿命期内各年的净现金流量不相等时,不能使用RATE函数来计算内部收益率,不过可以通过自定义内部收益率函数来解决这个问题。1. 自定义内部收益率函数的计算原理及步骤(1)首先假定一个内部收益率的初始值,并以此内部收益率作为贴现率i,计算项目的净现值NPV;(2)根据计算出的净现值数据,利用下面的公式计算第1次迭代后的内部收益率IRR:式中I为初始投资现值。若相邻两次计算的内部收益率相差不大,或计算出的净现值接近于零,则停止计算,就得到了内部收益率的近似值,否则重复上述迭代步骤。2. 定义“内部收益率”自定义函数定义一个名为“内部收益率”的自定义函数,其语法为:内部收益率(初始投资,期末残值,寿命期,年付现成本,年销售量,产品价格,单位变动成本,所得税税率)。自定义函数可以通过一小段程序对其参数及参数之间的关系进行描述,这种程序又称过程代码。“内部收益率”自定义函数的建立方法和步骤如下:单击[工具]菜单,选择[宏]项,在[宏]项的子菜单中选择[Visual Basic编辑器],打开Visual Basic编辑器窗口,再单击Visual Basic编辑器窗口的[插入]菜单,选择[模块]项,则显示模块1的窗口。在模块1窗口中,单击[插入]菜单,选择[过程]项,则系统弹出[添加过程]对话框,如图2所示。在[添加过程]对话框中,[名称]栏中输入“内部收益率”,[类型]选“函数”,单击[确定],出现编辑过程页面。在该页面中,将Public Function内部收益率和End Function修改为如下的过程代码:Public Function 内部收益率(初始投资,期末残值,寿命期,年付现成本,年销售量,产品价格,单位变动成本,所得税税率)净现金流量=(年销售量*(产品价格-单位变动成本)/10 000-年付现成本)*(1-所得税税率)+(初始投资-期末残值)/寿命期*所得税税率x1= 0.110jxz=净因素变动对内部收益率综合影响分析表格在单元格B14中输入预计内部收益率的计算公式为“=内部收益率(B4,B5,B6,B7,B8,B9,B10,B11)”(步骤为:单击工具栏的[粘贴函数]按钮,选择“用户定义”,选中“内部收益率”函数,出现该函数对话框,输入相应的内容即可);单元格D14中的计算公式为“=内部收益率(C4,C5,C6,C7,C8,C9,C10,B11)”,在单元格F14中输入公式“=D14-B14”。这样,就得到了多因素变动对内部收益率的综合影响结果。4. 设计单因素变动影响分析表格如图1所示,在单元格B17:B23中输入公式“=D4:D10”(数组公式输入),在单元格C17:C23中分别输入各个因素单独变动时的内部收益率计算函数如下:单元格C17:“=内部收益率(C4,B5,B6,B7,B8,B9,B10,B11)”单元格C18:“=内部收益率(B4,C5,B6,B7,B8,B9,B10,B11)”单元格C19:“=内部收益率(B4,B5,C6,B7,B8,B9,B10,B11)”单元格C20:“=内部收益率(B4,B5,B6,C7,B8,B9,B10,B11)”单元格C21:“=内部收益率(B4,B5,B6,B7,C8,B9,B10,B11)”单元格C22:“=内部收益率(B4,B5,B6,B7,B8,C9,B10,B11)”单元格C23:“=内部收益率(B4,B5,B6,B7,B8,B9,C10,B11)”在单元格D17:D23中输入公式“=(C17:C23-B14)/B14”(数组公式输入)。这样,一个投资项目内部收益率的敏感性分析模型就建立起来了。单击各个影响因素滚动条的箭头,改变其变动幅度,就可以很方便地了解各个因素对投资项目内部收益率的单独影响程度以及综合影响程度。三、投资项目内部收益率敏感性分析模型的应用在这个模型中,通过单击滚动栏两端的箭头或用鼠标拖曳滑块,即可改变各种因素的变动率,并分析其对投资项目内部收益率的影响程度。如果某因素在较小范围内发生了变动就会影响原定方案的经济效果,即表明该因素的敏感性强;如果某因素在较大范围内变动时才会影响原定方案的经济效果,即表明该因素的敏感性弱。在长期投资决策中,敏感性分析通常用来研究有关投资方案的现金净流量或固定资产寿命发生变动时,对该方案的净现值和内部收益率的影响程度。同时,它也可以用来研究有关投资项目的内部收益率变动时,对该方案的现金净流量或使用年限的影响程度。敏感性分析有助于企业领导了解在执行决策方案时应注意的问题,从而可以预先考虑措施与对策,避免决策上的失误。主要参考文献[1] 韩良智等. Excel在财务管理与分析中的应用[M]. 北京:中国水利水电出版社,2004.[2] 韩良智. Excel在投资理财中的应用[M]. 北京:电子工业出版社,2005.[3] 钟爱军.用Excel进行利润的敏感性分析[J]. 中国管理信息化,2006,(2):64.[4] 杨鉴淞. 基于Excel的盈亏平衡分析在投资项目不确定性分析中应用[J]. 中国管理信息化,2006,(4):9.。
EXCEL导入R的几种方法R—readr和readxl包

EXCEL导⼊R的⼏种⽅法R—readr和readxl包导⼊Excel数据⾄R语⾔的⼏种⽅法如有如下Excel数据源,如何将数据导⼊R语⾔呢?今天主要来介绍⼏种常见的⽅法;⼀、使⽤剪贴板,然后使⽤read.table函数;⾸先选择Excel中的数据源,然后复制;在Rstudio中输⼊如下脚本,回车即可;read.table("clipboard", header = TRUE)注:header = TRUE,表⽰⾸⾏为标题⾏,若为FALSE则标题⾏也算在正⽂第⼀⾏,结果如下;⼆、将Excel另存为csv⽂件,然后使⽤read.csv函数;打开Excel数据源,另存为example.csv⽂件;路径为【C:\Users\Administrator\Desktop\example】然后在Rstudio中输⼊如下代码,回车即可:read.csv("C:/Users/Administrator/Desktop/example/example.csv", header = TRUE)这⾥的header参数与使⽤剪贴板中的header参数⽤法⼀致,在此不在赘述;注:在R中“\”是⼀个转义字符,故需要将路径中的“\”字符,使⽤“/”替代,或使⽤"\\"替代;三、将Excel另存为txt⽂本⽂件,然后使⽤read.table函数;打开Excel数据源,另存为example.txt⽂件;路径为【C:\Users\Administrator\Desktop\example】然后在Rstudio中输⼊如下代码,回车即可;read.table("C:/Users/Administrator/Desktop/example/example.txt", header = TRUE)四、使⽤RODBC包(xls格式Excel⽂件)之前使⽤过RODBC包连接过Postgresql,回复【postgresql】可查看相关⽂章;这是⾥同样可以使⽤RODBC中的odbcConnectExcel来创建与Excel的连接,获取Excel中的数据;> install.packages("RODBC")> library(RODBC)> conn <- odbcConnectExcel("C:/Users/Administrator/Desktop/example/example.xls")> sqlTables(conn)> sqlFetch(conn, "example")> sqlQuery(conn, "select * from [example$]")> odbcClose(conn)其中example.xls中⼀个Excel⽂件(2003版本格式),example是⼯作薄中要读取数据的⼯作表的名称,conn是⼀个由odbcConnectExcel()返回的RODBC连接对象,mydataframe是返回的数据框。
如何用Excel做数据线性拟合和回归分析

如何用Excel做数据线性拟合和回归分析如何用Excel做数据线性拟合和回归分析我们已经知道在Excel自带的数据库中已有线性拟合工具,但是它还稍显单薄,今天我们来尝试使用较为专业的拟合工具来对此类数据进行处理。
在数据分析中,对于成对成组数据的拟合是经常遇到的,涉及到的任务有线性描述,趋势预测和残差分析等等。
很多专业读者遇见此类问题时往往寻求专业软件,比如在化工中经常用到的Origin和数学中常见的MATLAB等等。
它们虽很专业,但其实使用Excel 就完全够用了。
我们已经知道在Excel自带的数据库中已有线性拟合工具,但是它还稍显单薄,今天我们来尝试使用较为专业的拟合工具来对此类数据进行处理。
注:本功能需要使用Excel扩展功能,如果您的Excel尚未安装数据分析,请依次选择“工具”-“加载宏”,在安装光盘支持下加载“分析数据库”。
加载成功后,可以在“工具”下拉菜单中看到“数据分析”选项实例某溶液浓度正比对应于色谱仪器中的峰面积,现欲建立不同浓度下对应峰面积的标准曲线以供测试未知样品的实际浓度。
已知8组对应数据,建立标准曲线,并且对此曲线进行评价,给出残差等分析数据。
这是一个很典型的线性拟合问题,手工计算就是采用最小二乘法求出拟合直线的待定参数,同时可以得出R的值,也就是相关系数的大小。
在Excel中,可以采用先绘图再添加趋势线的方法完成前两步的要求。
选择成对的数据列,将它们使用“X、Y散点图”制成散点图。
在数据点上单击右键,选择“添加趋势线”-“线性”,并在选项标签中要求给出公式和相关系数等,可以得到拟合的直线。
拟合的直线是y=15620x+6606.1,R2的值为0.9994。
因为R2 >0.99,所以这是一个线性特征非常明显的实验模型,即说明拟合直线能够以大于99.99%地解释、涵盖了实测数据,具有很好的一般性,可以作为标准工作曲线用于其他未知浓度溶液的测量。
为了进一步使用更多的指标来描述这一个模型,我们使用数据分析中的“回归”工具来详细分析这组数据。
用R语言处理EXCEL数据

用R语言处理Excel数据和LP说起我在琢磨R,这东西有很强的数据处理能力。
LP在她公司的财务部门工作。
我告诉她如果有什么数据处理分析类的工作可以让我给她写程序做,原来利用Excel手工做的一些事情,现在或许可以较方便地用R来处理。
LP说好啊,她正在做固定资产清理,有一个包含几万条记录的Excel表,现在需要分发到各个下级单位分别补充信息、盖章确认、反馈汇总。
手工拆成上百个文件比较费劲,而让各个单位筛选填写自己的数据又担心有操作错误出现遗漏。
如果程序可以实现自动拆分的功能就好了。
我想起R的数据输出输入功能有xlsx等包,而数据筛选又是很简单的事情,于是马上说可以做。
我盘算着数据文件应该是一个标题行和几万个数据行组成,这样我只要读入xlsx文件,然后根据单位字段筛选出子集,再输出到不同的文件中,这样就大功搞成了。
一、实际需求打开她的工作xlsx文件,发现情况和所想的有区别。
1.文件上方有一个旋转透视表,用于汇总数据结果。
这个表在每个分拆开的文件中都要有。
2.子集不是从第一行开始,而是从旋转透视表的下方指定某行开始。
数据要含表头。
3.拆分时要按照一级单位建立目录(十几个),并在一级单位的目录中按照二级单位生成文件(上百个)。
这样就可以按照一级单位的目录下发,再由一级单位下发二级单位组织填写。
大致文件的头部截图如下:按照第5列(E列)建立目录,按照第6列(F列)在对应目录下建立文件。
这比预想的复杂一点点,不过现实需求应该是复杂的。
我说我试试看能够实现多少。
二、寻找合适的函数、测试、实现的过程1.安装加载xlsx程序包。
2.读入数据使用read.xlsx()函数读入数据。
发现几个问题:读入速度较慢、读到最后java 报崩溃,另外,如果只读入少量数据进行测试时,发现读入的汉字为乱码,用write.xlsx()生成xlsx文件时,还是乱码。
同事建议可以调高java的heap数值,但是我想这点数据就要调整heap值,那更多的数据岂非不用玩了?既然只有一个sheet,我于是将xlsx文件转存为csv文件,作为文本形式,用read.table()函数读入。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通过管道及XMLRPC从Excel里使用R(不用REXCEL) I. 管道方法REXCEL这个东西本就麻烦,似乎已经早已不能用于R的新近版本,能装上也未必易用。
尽管Excel与R远不能完美交互,但就借R之长补Excel之短而论,可行且并不复杂的方法还是不少的。
这里介绍的是如何通过管道从Excel向R传递R脚本/语句并捕获返回。
命令行模式下,可以直接向R传递多条语句,有10000字节(约9.7KB)的长度限制。
不过,这个长度的脚本也能做不少事情了。
因此,可以直接用VBA来写R脚本,通过管道传给R,并捕获返回的计算结果。
例如下面这段VBA代码,给R有而Excel没有的Friedman检验在Excel里做了个宏。
宏里封装了Friedman检验的R代码,并负责将代码传至R及捕获计算结果。
Sub MacroFriedman()On Error GoTo ErrHandlerSet Target = Application.InputBox(prompt:="选取数据", Title:="Friedman Test", Type:=8) nc = Target.Columns.Count: nr = Target.Rows.CountFor Each clm In Target.ColumnsFor Each cel In clm.Cellsvec = vec & cel.Value & " "NextNextvec = Join(Split(Trim(vec), " "), ",")RCode = "m<-c(" & vec & "); " & "dim(m)<-c(" & nr & "," & nc & ")"RCode = RCode & "; r<-friedman.test(m); r"'Debug.Print RCodeSet ws = CreateObject("WScript.Shell")Set oExec = ws.exec("C:\R302\bin\R --slave -e " & Chr(34) & RCode & Chr(34))rtErr = oExec.stdErr.readall()Debug.Print Trim(oExec.StdOut.readall())GoTo TheEndErrHandler:Exit SubTheEnd:End Sub关于以上代码的几点说明:1.之所以采用“宏”而没有用UDF(自定义函数)方式,是因为UDF方式下,拖动鼠标选取数据的时候会遭到Excel的自动反复调用。
此外,可以通过菜单自定义将宏的图标放在工具栏上。
2. 使用WScript.Shell对象实现与R管道通信,不清楚这种方法在Win8及Office 2013下是否可行。
II. Excel中使用XMLRPC即使WScript.Shell之类的方法不可用,还可以通过XMLRPC与外部程序通讯,估计用VBA发出XMLHTTP请求的功能不至于因为安全之类的考虑被取消或是复杂化。
不过,R里没有成熟的XMLRPC服务,于是,我尝试了用Python做转发。
Python里有个十分易用的XMLRPC服务器(SimpleXMLRPCServer),实际上,XMLRPC也是实现Excel与Python对接的好办法。
尽管Python可以调用COM,但此类方法不仅麻烦,且实际上故障不少。
如下是一个用Python写的服务器,简单而稳健,只有一个功能:将R代码转发给R,返回结果。
from SimpleXMLRPCServer import SimpleXMLRPCServerfrom subprocess import Popen,PIPE,STDOUTdef FORWARDING(RCODE):print RCODEp=Popen(["C:\\R302\\bin\\R.exe", "--slave", "-e", RCODE], stdout=PIPE, stderr=STDOUT) return p.stdout.read(-1)server = SimpleXMLRPCServer(("localhost", 8080))print "Listening on port 8080..."server.register_function(FORWARDING, "FORWARDING")server.serve_forever()VBA端代码:Sub MacroFriedman()Set target = Application.InputBox(prompt:="Pick Data", Title:="Friedman Test", Type:=8) nc = target.Columns.Count: nr = target.Rows.CountFor Each clm In target.ColumnsFor Each cel In clm.Cellsvec = vec & cel.Value & " "NextNextvec = Join(Split(Trim(vec), " "), ",")Rcode = "m<-c(" & vec & "); " & "dim(m)<-c(" & nr & "," & nc & ")"'Rcode = Rcode & "; r<-friedman.test(m); r$p.value"Rcode = Rcode & "; r<-friedman.test(m); r"Debug.Print Len(Rcode)Debug.Print RPCCALL(Rcode)End SubPrivate Function RPCCALL(ByVal RSTRING As String)Dim XX As StringXX ="<methodCall><methodName>FORWARDING</methodName><params><param><value><string><![CDAT A["XX = XX & RSTRING & "]]></string></value></param></params></methodCall>"Dim XREQ As New XMLHTTP60Dim XDOC As DOMDocument60XREQ.Open "POST", "HTTP://localhost:8080"XREQ.setRequestHeader "Content-Type", "text/xml"XREQ.setRequestHeader "Content-length", Str(Len(RSTRING))XREQ.send (XX)Set XDOC = XREQ.responseXMLRPCCALL = XDOC.XMLEnd Function上面提到“XMLRPC也是实现Excel与Python对接的好办法”,以下提供一段Python代码作为示例:一个调用scipy 统计函数的XMLRPC;Excel/VBA端无非也是构建XML格式的RPC请求。
from scipy.stats import *from numpy import arrayfrom cStringIO import StringIOimport xmlrpclibfrom SimpleXMLRPCServer import SimpleXMLRPCServerdef NOPARAM():return "Hello"def FRIEDMAN(*DATA):DATALIST = []for X in DATA:DATALIST.append(array(X))OUTPUT=StringIO()C,P = friedmanchisquare(*DATALIST)print >> OUTPUT, C,Preturn OUTPUT.getvalue()def KRUSKAL(*DATA):DATALIST = []for X in DATA:DATALIST.append(X)OUTPUT=StringIO()H,P = kruskal(*DATALIST)print >> OUTPUT, H,Preturn OUTPUT.getvalue()def KENDALLTAU(X,Y,BOOL):T,P=kendalltau(X,Y,initial_lexsort=BOOL)OUTPUT=StringIO()print >> OUTPUT, T,Preturn OUTPUT.getvalue()server = SimpleXMLRPCServer(("localhost", 8000)) print "Listening on port 8000..."server.register_function(NOPARAM, "NOPARAM") server.register_function(FRIEDMAN, "FRIEDMAN")server.register_function(KRUSKAL, "KRUSKAL")server.register_function(KENDALLTAU, "KENDALLTAU")server.serve_forever()解释几个细节:(1) scipy.stats里有些函数的参数要求必须使用numpy的array,friedmanchisquare就是如此,否则会报错,其他很多直接传列表就行,如下一例:wilcoxon函数可以这样调用:data1=[78,24,64,45,64,52,30,50,64,50,78,22,84,40,90,72]data2=[78,24,62,48,68,56,25,44,56,40,68,36,68,20,58,32]print wilcoxon(data1,data2)而friedmanchisquare必须用numpy.array:ar1=array([9,9.5,5,7.5,9.5,7.5,8,7,8.5,6])ar2=array([7,6.5,7,7.5,5,8,6,6.5,7,7])ar3=array([6,8,4,6,7,6.5,6,4,6.5,3])print friedmanchisquare(ar1,ar2,ar3)(2)例子里用到了StringIO,看上去倒是有些麻烦,主要是因为xmlrpclib内部用了marshal,marshal只能处理Python的基本数据类型,处理不了numpy,所以输出时要转换成string。