public bool SaveExcelFile(string fileName, Guid experimentId) { try { ConfigRotationController rotationController = new ConfigRotationController(); List <RotationInfo> rotationList = rotationController.GetCurrentRotationInfos(experimentId); DataTable _pcrTable = new DataTable(); _pcrTable.Columns.Add("Number", typeof(int)); _pcrTable.Columns.Add("Color", typeof(string)); _pcrTable.Columns.Add("TubeID", typeof(Guid)); _pcrTable.Columns.Add("TubeBarCode", typeof(string)); _pcrTable.Columns.Add("TubePosition", typeof(string)); _pcrTable.Columns.Add("TubeType", typeof(int)); _pcrTable.Columns.Add("TubeTypeColor", typeof(string)); _pcrTable.Columns.Add("TubeTypeColorVisible", typeof(string)); _pcrTable.Columns.Add("PoolingRuleName", typeof(string)); _pcrTable.Columns.Add("TestingItemName", typeof(string)); _pcrTable.Columns.Add("PCRPlateBarCode", typeof(string)); _pcrTable.Columns.Add("PCRPosition", typeof(int)); _pcrTable.Columns.Add("PCRTestItemID", typeof(Guid)); _pcrTable.Columns.Add("PCRTestResult", typeof(string)); _pcrTable.Columns.Add("PCRTestContent", typeof(string)); _pcrTable.Columns.Add("SimpleTrackingResult", typeof(string)); System.Collections.Generic.Dictionary <int, string> liquidTypeDictionary = new System.Collections.Generic.Dictionary <int, string>(); List <LiquidType> LiquidTypeList = SessionInfo.LiquidTypeList = WanTai.Common.Configuration.GetLiquidTypes(); foreach (LiquidType liquidType in LiquidTypeList) { liquidTypeDictionary.Add(liquidType.TypeId, liquidType.Color); } string errorMessage = string.Empty; ExperimentsInfo expInfo = new WanTai.Controller.HistoryQuery.ExperimentsController().GetExperimentById(experimentId); string experimentName = expInfo.ExperimentName; //string fileName = folderPath + "\\" + experimentName + "_" + DateTime.Now.ToString("yyyyMMdd") + ".xls"; if (System.IO.File.Exists(fileName)) { System.IO.File.Delete(fileName); } WanTai.Controller.PCR.PCRTestResultViewListController pcrController = new WanTai.Controller.PCR.PCRTestResultViewListController(); string extension = System.IO.Path.GetExtension(fileName); if (extension.Equals(".pdf")) { DataSet ds = new DataSet(); //ds.DataSetName = "实验名称:" + experimentName + " 操作员:" + experimentLoginName + " 运行时间:" + experimentCreateDate; foreach (RotationInfo rotation in rotationList) { _pcrTable.Clear(); pcrController.QueryTubesPCRTestResult(experimentId, rotation.RotationID, _pcrTable, liquidTypeDictionary, System.Windows.Media.Colors.Red, System.Windows.Media.Colors.Green, out errorMessage); //DataTable dt = new DataTable(" " + rotation.RotationName + " 操作员:" + experimentLoginName + " 创建时间:" + rotation.CreateTime.ToString("yyyy年MM月dd日HH时mm分ss秒")); DataTable dt = new DataTable(" " + rotation.RotationName); dt.Columns.Add("行号"); dt.Columns.Add("类型"); dt.Columns.Add("采血管BarCode"); dt.Columns.Add("采血管位置"); dt.Columns.Add("混样方式"); dt.Columns.Add("检测项目"); dt.Columns.Add("PCR板BarCode"); dt.Columns.Add("PCR板Position"); dt.Columns.Add("检测结果"); dt.Columns.Add("实验记录"); dt.Columns.Add("Color"); foreach (DataRow row in _pcrTable.Rows) { int tubeType = (int)row["TubeType"]; string tubeTypeStr = string.Empty; if (tubeType == (int)Tubetype.PositiveControl) { tubeTypeStr = "阳性对照物"; } else if (tubeType == (int)Tubetype.NegativeControl) { tubeTypeStr = "阴性对照物"; } else if (tubeType == (int)Tubetype.Complement) { tubeTypeStr = "补液"; } DataRow dr = dt.NewRow(); dr["行号"] = (int)row["Number"]; dr["类型"] = tubeTypeStr; dr["采血管BarCode"] = row["TubeBarCode"].ToString(); dr["采血管位置"] = row["TubePosition"].ToString(); dr["混样方式"] = row["PoolingRuleName"].ToString(); dr["检测项目"] = row["TestingItemName"].ToString(); dr["PCR板BarCode"] = row["PCRPlateBarCode"].ToString(); dr["PCR板Position"] = row["PCRPosition"].ToString(); dr["检测结果"] = row["PCRTestResult"].ToString(); dr["实验记录"] = row["SimpleTrackingResult"].ToString(); dr["Color"] = row["Color"]; dt.Rows.Add(dr); } ds.Tables.Add(dt); } return(ExportToPdf(ds, fileName, expInfo)); } else if (extension.Equals(".xls")) { using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=\"Excel 8.0;HDR=YES;\"")) { connection.Open(); OleDbCommand command = new OleDbCommand(); command.Connection = connection; foreach (RotationInfo rotation in rotationList) { _pcrTable.Clear(); pcrController.QueryTubesPCRTestResult(experimentId, rotation.RotationID, _pcrTable, liquidTypeDictionary, System.Windows.Media.Colors.Red, System.Windows.Media.Colors.Green, out errorMessage); string createTableSql = "create table [" + rotation.RotationName + "] ([行号] Integer,[类型] nvarchar,[采血管BarCode] nvarchar,[采血管位置] nvarchar," + "[混样方式] nvarchar,[检测项目] nvarchar,[PCR板BarCode] nvarchar,[PCR板Position] Integer,[检测结果] nvarchar,[实验记录] nvarchar)"; command.CommandText = createTableSql; command.ExecuteNonQuery(); string insertSql = string.Empty; foreach (DataRow row in _pcrTable.Rows) { int tubeType = (int)row["TubeType"]; string tubeTypeStr = string.Empty; if (tubeType == (int)Tubetype.PositiveControl) { tubeTypeStr = "阳性对照物"; } else if (tubeType == (int)Tubetype.NegativeControl) { tubeTypeStr = "阴性对照物"; } else if (tubeType == (int)Tubetype.Complement) { tubeTypeStr = "补液"; } insertSql = string.Format("Insert into [" + rotation.RotationName + "] (行号,类型,采血管BarCode,采血管位置,混样方式,检测项目,PCR板BarCode,PCR板Position,检测结果,实验记录) " + "values({0},'{1}','{2}','{3}','{4}','{5}','{6}',{7},'{8}','{9}')", (int)row["Number"], tubeTypeStr, row["TubeBarCode"].ToString(), row["TubePosition"].ToString(), row["PoolingRuleName"].ToString(), row["TestingItemName"].ToString(), row["PCRPlateBarCode"].ToString(), row["PCRPosition"].ToString(), row["PCRTestResult"].ToString(), row["SimpleTrackingResult"].ToString()); command.CommandText = insertSql; command.ExecuteNonQuery(); } } connection.Close(); } } return(true); } catch (Exception e) { throw e; } }