public static void test6() { try { ScriptEngine engine = Python.CreateEngine(); var paths = engine.GetSearchPaths(); paths.Add(@"D:\Program Files (x86)\IronPython 2.7\Lib"); engine.SetSearchPaths(paths); ScriptScope scope = engine.CreateScope(); ScriptSource script = engine.CreateScriptSourceFromFile(@"main3.py"); var result = script.Execute(scope); excel_cell_data cell_Data = new excel_cell_data(); cell_Data.Int32Value = 200; cell_Data.Int64Value = 300; List <string> list = new List <string>(); list.Add("1111"); list.Add("2222"); string[] list2 = { "aaaa", "bbbb" }; var func = scope.GetVariable <Func <object, object> >("Test2"); IronPython.Runtime.Bytes data = new IronPython.Runtime.Bytes(cell_Data.ToByteArray()); func(data); var func2 = scope.GetVariable <Func <object> >("Test3"); func2(); } catch (Exception e) { Console.WriteLine(e.Message); } }
public bool AddLineData(int excelLine, List <string> dataList) { if (dataList.Count <= 0) { Console.WriteLine(msgName + "数据列为空"); return(false); } if (!int.TryParse(dataList[0], out int index)) { ConsoleExcelLine(msgName, excelLine, 0, "索引解析错误"); return(false); } if (table_data.Table.TryGetValue(index, out excel_line_data line_data)) { ConsoleExcelLine(msgName, excelLine, -1, "存在重复的索引:index=" + index); return(false); } for (int i = 0; i < dataList.Count; ++i) { if (!index2Type.TryGetValue(i, out DATA_TYPE dataType)) { ConsoleExcelLine(msgName, excelLine, i, "找不到数据类型:index=" + index); return(false); } var cell_data = new excel_cell_data(); line_data.CellData.Add(cell_data); var dataDesc = dataList[i]; try { switch (dataType) { case DATA_TYPE.INT: { cell_data.DataType = excel_cell_data.Types.DATA_TYPE.Int32; cell_data.Int32Value = int.Parse(dataDesc); } break; case DATA_TYPE.LONG: { cell_data.DataType = excel_cell_data.Types.DATA_TYPE.Int64; cell_data.Int64Value = long.Parse(dataDesc); } break; case DATA_TYPE.STRING: { cell_data.DataType = excel_cell_data.Types.DATA_TYPE.String; cell_data.BytesValue = ByteString.CopyFromUtf8(dataDesc); } break; case DATA_TYPE.FLOAT: { cell_data.DataType = excel_cell_data.Types.DATA_TYPE.Float; cell_data.FloatValue = float.Parse(dataDesc); } break; case DATA_TYPE.DOUBLE: { cell_data.DataType = excel_cell_data.Types.DATA_TYPE.Double; cell_data.DoubleValue = double.Parse(dataDesc); } break; default: ConsoleExcelLine(msgName, excelLine, i, "错误的数据类型:type=" + dataType); return(false); } } catch (Exception e) { ConsoleExcelLine(msgName, excelLine, i, "解析数据出错:error=" + e.Message); return(false); } } return(true); }