




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 VSTO可以通过项目创建office的智能文档。2 创建excle ,有三中,工作簿,模板,外接程序。我们发现使用模板可以调用form的控件,而工作簿不能。我们需要对单元格进行操作是,需要将namedRange控件引入到sheet中。然后就可以对其读写。使用代码dRange1.Value2 = this.dateTimePicker1.Text ;取得值。3 绑定数据我们可以使用系统的数据源控制面板引入数据表,将数据源面板中的表字段拖入sheet中,既可以实现数据绑定,但是这是,只能显示一条数据,需要实现上下翻页,可以使用BindingSource的翻页功能。代码如下:this.t_UserBindingSource.MoveNext();4 存储过程绑定在数据源中,我们也可以引用存储过程。我们只需要将该存储过程拖入sheet,系统会自动将输出参数生成文本框,返回结果生成表格,然后还会自动生成一个执行按钮。5 创建操作面板我们可以在excl工作簿右面创建一个操作面板来实现一些业务功能。 X(1) 在工作簿工程中创建新建项“操作窗格控件”ActionsPaneControl活动面板,然后我们可以在其中拖入一些控件来实现一些功能,例如拖入一个textBox,然后点击按钮后,将textBox1中的值写入到excle中的namedRang。private void button1_Click(object sender, EventArgs e) Globals.SdRange1.Value = textBox1.Text; (2) 在工作簿中实例化该活动面板,并绑定到工作簿中private void Sheet1_Startup(object sender, System.EventArgs e) ActionsPaneControl1 apc = new ActionsPaneControl1(); Globals.ThisWorkbook.ActionsPane.Controls.Add(apc); 6 给单元格绑定数据通过VSTO可以在excle中改变单元格的名称,然后利用该名称对该单元格赋值。例如:我们将A1单元格改为aaa,然后再界面拖入一个textBox1。将他们绑定在一起this.aaa.DataBindings.Add(Value,textBox1,text);注意:只有改过名字的单元格可以赋值,像A2这样的单元格就不能赋值的。7 用list绑定VSTO默认情况下VSTO只能使用dataset来绑定数据库,但是我们三层架构返回的都是list。怎么办呢?我们可以变通的来解决这个问题。VSTO是可以绑定BindingSource。而BindingSource又可以绑定list。通过这样的转接就实现VSTO绑定list了。为了方便可以:1 在数据源面板中添加对象数据源,将model引入2 从数据源中将model拖入excel中。Model是不能自动得到数据的。但是拖入后系统会自动帮我们创建一个BindingSource。而且这个BindingSource还与界面中的每一个字段都绑定好了。3 我们在后台代码中加入base_UserMangeInfoBindingSource.DataSource = MES.BASE.BLL.Base_UserMangeBLL.SelectAll();通过bll将数据查询出来绑定到BindingSource。但是:该方法只能单向绑定,也就是从BindingSource绑定到界面控件。无法从界面控件将修改后的数据传给BindingSource。8 数据缓存Vsto可以进行数据缓存,当数据库离线后,在本地也可以打开缓存的数据。但是我认为这个并不好用。我们需要的是如何利用数据缓存写入数据库。上面提到的方法都是从数据库中读出数据,如果要将数据写回数据库,还得自己想办法。最直接的办法就是读取界面的数据控件。然后调用bll写回。9 保存word如果需要保存整个word文档包括他们的格式,可能VSTO就无能为力啦。VSTO只能向数据库中写入数据,不能把格式同步保存。要设置格式只能在word智能文档namedRange控件上编辑这一段落用上面的格式。然后把这些namedRange段落写入数据显示出来。问题这样编写word就不方便了。很多时候我们保存word并不一定有固定的格式。因此要保存word可能还是得走保存整个word文件的办法。10 命令行打开VSTO文档传入参数很多时候,我们希望在打开VSTO文件的时候,传入参数(例如表ID),我们好在VSTO中根据参数查询绑定数据。VSTO文档没有构造函数。我们可用通过命令行传参数的办法变相实现这个方法。1 首先在使用Environment.GetCommandLineArgs()方法获取命令行中的参数。private void ThisDocument_Startup(object sender, System.EventArgs e) int id=0; string id1=; foreach (String item in Environment.GetCommandLineArgs() if (item.Contains(id:)/如果包含id MessageBox.Show(item); int a1 = item.IndexOf(:) + 1;/起始点 int a2 = item.IndexOf(;) - a1;/长度 /截取字符串中ID的值 id1 =item.Substring(a1, a2); id = System.Convert.ToInt32(id1); /绑定到前台对象 bookmark1.Text = id.ToString(); 2 在调用VSTO的窗体,使用Process.Start()方法,通过命令行的方式调用 string WordPath=d:My DocumentsVisual Studio 2008ProjectsWindowsFormsApplication3WordTemplate1binDebugWordTemplate1.dotx; string id = 1234567890; Process.Start(winword,+WordPath+ /id:+id+;);11 excl导出导入数据和图表using System;using System.Collections.Generic;using System.Text;using System.Web.UI.WebControls;using Excel;using System.Reflection;using System.Web;namespace BLL public class ExclOut string strUrl ;/保存路径 GridView dgv; public int DateCount;/导出条数 int DataGridViewColumncount ;/取得网格控件列数 public int DataGridViewRowCount;/取得网格控件行数 public Object, MyData;/用于接收数据的对象 int Count, i, j; public ExclOut(GridView GridView,string url) strUrl = url ; dgv = GridView;/构造方法取得要导出的网格控件 DateCount = dgv.Rows.Count; / / 导出excl和图表 / 参数:type输出类型strRange1,strRange2图表输出范围,str图表内部名称数组,workSheetName基础表标签页名 / / public string exutExcel(int type, string strRange1, string strRange2, string str, string workSheetName) /HttpContext.Current.Response.Write(1); DataGridViewColumncount = dgv.Columns.Count;/取得网格控件列数 DataGridViewRowCount = dgv.Rows.Count+1;/取得网格控件行数 MyData = new ObjectDataGridViewRowCount + 1, DataGridViewColumncount;/用于接收数据的对象 /HttpContext.Current.Response.Write(:2); ApplicationClass MyExcel ;/excel对象 Workbooks MyWorkBooks;/工作簿对象集合 Workbook MyWorkBook;/工作簿 Worksheet MyWorkSheet;/标签页 Chart MyChart;/图表对象 Range MyRange, MyRange1;/范围对象 try MyExcel = new ApplicationClass();/实例化excle对象 /MyExcel.Visible = true;/在界面打开excle窗口 if (MyExcel = null) /MessageBox.Show(Excel程序无法启动!, 信息提示, MessageBoxButtons.OK, MessageBoxIcon.Information); return null; MyWorkBooks = MyExcel.Workbooks; MyWorkBook = MyWorkBooks.Add(Missing.Value); MyWorkSheet = (Worksheet)MyWorkBook.Worksheets1; MyWorkSheet.Name = workSheetName;/设置标签页名称 MyRange = MyWorkSheet.get_Range(A1, F1); /取得标题 Count = 0; for (i = 0; i dgv.Columns.Count; i+) MyData0, i = dgv.HeaderRow.Cellsi.Text; Count = Count + 1; /设标题为黑体字 MyWorkSheet.get_Range(MyWorkSheet.Cells1, 1, MyWorkSheet.Cells1, Count).Font.Name = 黑体; /标题字体加粗 MyWorkSheet.get_Range(MyWorkSheet.Cells1, 1, MyWorkSheet.Cells1, Count).Font.Bold = true; /设表格边框样式 MyWorkSheet.get_Range(MyWorkSheet.Cells1, 1, MyWorkSheet.Cells1, Count).Borders.LineStyle = 1; /-升序排列- j = 1; /从网格控件中遍历取得数据 foreach (GridViewRow var in dgv.Rows) int i1 = 0; for (i = 0; i = 0; j-) for (i = 0; i DataGridViewColumncount; i+) string str1 = dgv.Rowsj.Cellsi.Text; if (str1 != & dgv.Rowsj.Cellsi.Visible = true) MyDatak, i = str1; k+; /同时导出多个图表(月表) private static void exportChatr(Workbook MyWorkBook, Worksheet MyWorkSheet, int DataGridViewcount, out Chart MyChart, out Range MyRange1) /-DPPM- string str2 = DPPM, MONTH, VALUE, 柱轴标题, 柱轴标签, DPPM ; string strR2 = C1:C + DataGridViewcount + ,L1:N + DataGridViewcount; chart2(MyWorkBook, MyWorkSheet, strR2, null, str25, str2); /-OTIF- string str1 = OTIF, MONTH, percent, 柱轴标题, 柱轴标签, OTIF ; string strR1 = C1:C + DataGridViewcount + ,F1:H + DataGridViewcount; chart2(MyWorkBook, MyWorkSheet, strR1, null, str15, str1); /-Problem Resolution- string str3 = Problem Resolution, MONTH, VALUE, 柱轴标题, 柱轴标签, Problem Resolution ; string strR3 = C1:C + DataGridViewcount + ,O1:Q + DataGridViewcount; chartColumLine(MyWorkBook, MyWorkSheet, out MyChart, out MyRange1, strR3, null, str35, str3); /-Audit Performance- string str4 = Audit Performance, MONTH, VALUE, 柱轴标题, 柱轴标签, Audit Performance ; string strR4 = C1:C + DataGridViewcount + ,AI1:AI + DataGridViewcount; chartDf(MyWorkBook, MyWorkSheet, out MyChart, out MyRange1, strR4, null, str45, str4); /-Audit Performance- string str5 = Load Capacity, MONTH, total, 柱轴标题, 柱轴标签, Load Capacity ; string strR5 = C1:C + DataGridViewcount + ,U1:U + DataGridViewcount; chartDf(MyWorkBook, MyWorkSheet, out MyChart, out MyRange1, strR5, null, str55, str5); /-FAIR Right First Time- string str6 = FAIR Right First Time, MONTH, value, 柱轴标题, 柱轴标签, FAIR Right First Time ; string strR6 = C1:C + DataGridViewcount + ,AD1:AE + DataGridViewcount; chartColum2All(MyWorkBook, MyWorkSheet, out MyChart, out MyRange1, strR6, null, str65, str6); /-Production Plan Adherance- string str7 = Production Plan Adherance, MONTH, total, 柱轴标题, 柱轴标签, Production Plan Adherance ; string strR7 = C1:C + DataGridViewcount + ,AA1:AB + DataGridViewcount; chart1(MyWorkBook, MyWorkSheet, out MyChart, out MyRange1, strR7, null, str75, str7); /-Safety Stock - string str8 = Safety Stock , MONTH, total, 柱轴标题, 柱轴标签, Safety Stock ; string strR8 = C1:C + DataGridViewcount + ,W1:X + DataGridViewcount; chart1(MyWorkBook, MyWorkSheet, out MyChart, out MyRange1, strR8, null, str85, str8); /生成图表柱状 private static void chartDf(Workbook MyWorkBook, Worksheet MyWorkSheet, out Chart MyChart, out Range MyRange1, string strRange1, string strRange2, string chartName, string str) /-生成图表- MyChart = (Chart)MyWorkBook.Charts.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value); MyChart.Name = chartName;/设置标签页名 /取得表中的区域,B2:B8为第一列C2:C8为第二列 /get_Resize(Missing.Value, 5);后面的表示柱状图的大小,最大 MyRange1 = MyWorkSheet.get_Range(strRange1, Type.Missing); /-chart向导,设置图表的基本信息- /生成图表的方法.MyRange1(数据源)、XlChartType.xl3DColumn(图表样式)、(套用样式格式的编号) /XlRowCol.xlColumns(分组是按行还是列)、(第几列是分类也就是x轴)、(从第几行开始取数,空出行,可以作为图例)、true(有图列) /KPI指标(标题)、姓名(x轴标题)、数量(y轴标题)、系列轴标题(第二数字轴标题) MyChart.ChartWizard (MyRange1, Type.Missing, Type.Missing, XlRowCol.xlColumns, 1, 1, true, str0, str1, str2, str3); /实例化chart对象的图形设置对象 Excel.ChartGroup grp = (Excel.ChartGroup)MyChart.ChartGroups(1); /grp.GapWidth = 10; /grp.VaryByCategories = true; /设置系列格式,也就是图表中字段的显示格式。SeriesCollection(1),括号中表示第几列。 Excel.Series s1 = (Excel.Series)grp.SeriesCollection(1); s1.Fill.ForeColor.SchemeColor = 5;/设置前景色 s1.HasDataLabels = true;/柱状头上的标签打开,显示数据 /设置统计图的标题和图例的显示 TitStyl(MyChart); /设置x轴 Excel.Axis categoryAxis = (Excel.Axis)MyChart.Axes(Excel.XlAxisType.xlCategory, XlAxisGroup.xlPrimary); /categoryAxis.AxisTitle.Font.Size = 7; categoryAxis.TickLabels.Font.Size = 8;/x轴标签字体大小 /生成图表柱状+1线 private static void chart1(Workbook MyWorkBook, Worksheet MyWorkSheet, out Chart MyChart, out Range MyRange1,string strRange1,string strRange2,string chartName,string str) /-生成图表- MyChart = (Chart)MyWorkBook.Charts.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value); MyChart.Name = chartName;/设置标签页名 /取得表中的区域,B2:B8为第一列C2:C8为第二列 /get_Resize(Missing.Value, 5);后面的表示柱状图的大小,最大 MyRange1 = MyWorkSheet.get_Range(strRange1, Type.Missing); /-chart向导,设置图表的基本信息- /生成图表的方法.MyRange1(数据源)、XlChartType.xl3DColumn(图表样式)、(套用样式格式的编号) /XlRowCol.xlColumns(分组是按行还是列)、(第几列是分类也就是x轴)、(从第几行开始取数,空出行,可以作为图例)、true(有图列) /KPI指标(标题)、姓名(x轴标题)、数量(y轴标题)、系列轴标题(第二数字轴标题) MyChart.ChartWizard (MyRange1, Type.Missing, Type.Missing, XlRowCol.xlColumns, 1, 1, true, str0, str1, str2, str3); /实例化chart对象的图形设置对象 Excel.ChartGroup grp = (Excel.ChartGroup)MyChart.ChartGroups(1); /grp.GapWidth = 10; /grp.VaryByCategories = true; /设置系列格式,也就是图表中字段的显示格式。SeriesCollection(1),括号中表示第几列。 Excel.Series s2 = (Excel.Series)grp.SeriesCollection(2); s2.HasDataLabels = true;/柱状头上的标签打开,显示数据 s2.Fill.ForeColor.SchemeColor = 5; /s2.ChartType = XlChartType.xlLine;/柱状设置为线型 Excel.Series s1 = (Excel.Series)grp.SeriesCollection(1); s1.Border.ColorIndex = 3; /s1.HasDataLabels = true;/柱状头上的标签打开,显示数据 s1.ChartType = XlChartType.xlLine;/柱状设置为线型 /设置统计图的标题和图例的显示 TitStyl(MyChart); /设置两个轴的属性,Excel.XlAxisType.xlValue对应的是Y轴,Excel.XlAxisType.xlCategory对应的是X轴: /Excel.Axis valueAxis = (Excel.Axis)MyChart.Axes(Excel.XlAxisType.xlValue, XlAxisGroup.xlPrimary); /valueAxis.AxisTitle.Orientation = -90; Excel.Axis categoryAxis = (Excel.Axis)MyChart.Axes(Excel.XlAxisType.xlCategory, XlAxisGroup.xlPrimary); /categoryAxis.AxisTitle.Font.Size = 7; categoryAxis.TickLabels.Font.Size = 8;/x轴标签字体大小 /生成图表柱状+2线 private static void chart2(Workbook MyWorkBook, Worksheet MyWorkSheet, string strRange1, string strRange2, string chartName, string str) /-生成图表- Chart MyChart = (Chart)MyWorkBook.Charts.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value); MyChart.Name = chartName;/设置标签页名 /取得表中的区域,B2:B8为第一列C2:C8为第二列 /get_Resize(Missing.Value, 5);后面的表示柱状图的大小,最大 Range MyRange1 = MyWorkSheet.get_Range(strRang
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城管理论考试试题及答案
- 食品安全法规解读讲解
- 新质生产力的面试问题
- 纺织业:新质生产力的转型路径
- 新质生产力引领汕头文旅
- 新质生产力利好银行吗
- 2025年药理学基础知识考察答案及解析
- 2025年康复医学康复评定及干预策略考核答案及解析
- 2025年全科医学综合能力素质评价答案及解析
- 2025年核医学临床应用实践答案及解析
- 致密油藏中CO2驱油机理研究
- 2024-2025学年四年级第一学期语文教学计划及教学进度表
- 2025年高校教师岗前培训高等教育心理学知识竞赛考试题库50题及答案
- 电动港机装卸机械司机(高级技师)职业技能鉴定理论考试题(附答案)
- 无人机打药合同协议书
- 餐饮公司中标协议书
- 乡村振兴文化旅游发展规划
- 汽车报废委托协议书
- 《油气输送管道完整性评估》课件
- 光伏支架生产工艺流程
- 钢结构雨棚作业安全技术交底
评论
0/150
提交评论