using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; //using ADODB; using System.Data.SqlClient; using System.Data; using System.Drawing; using MES_SPC; //using Microsoft.Office.Core; public class DirectExcel {//直接操作Excel public DirectExcel() { //逻辑区域 } /// /// 质量数据查询 /// 引用页质量数据查询页面QualityData_Query.aspx /// /// /// /// public static void ExcelTable_QualityData_Query_Direct(ref string sql, ref string fileName, ref int Count,ref int ColCount,ref object[,] ColsArray) { //新建一个excel //string connectionString = ApplicationConfiguration.ERP_ConnectionString; //Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); //excel.Application.Workbooks.Add(true); //Microsoft.Office.Interop.Excel.Workbook wb = (Microsoft.Office.Interop.Excel.Workbook)excel.Application.Workbooks[1]; //excel.Visible = false; //Microsoft.Office.Interop.Excel.Worksheet ws = new Microsoft.Office.Interop.Excel.Worksheet(); //ws = (Microsoft.Office.Interop.Excel.Worksheet)excel.ActiveSheet; //ws.Name = "Sheet1";//新建的Table名称 //string LastCol = GetLastCellName(ColCount); ////设置头 //Microsoft.Office.Interop.Excel.Range rangeHeader =ws.get_Range("A1", LastCol+"1"); //rangeHeader.Merge(0); //ws.Cells[1, 1] = "合格质量数据"; ////rangeHeader.Font.Name = "黑体"; //rangeHeader.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; ////rangeHeader.Borders.LineStyle = 1; //设置单元格边框的粗细 ////rangeHeader.EntireColumn.AutoFit(); //自动调整列宽 ////序号,订单号,发动机号,工位号,测量位置, 测量项目 ,测量值,测量单位,理论值 ,上限值,下限值,合格标志,生产日期 ////第二部设置列头 //Microsoft.Office.Interop.Excel.Range rangeCol =ws.get_Range("A2", LastCol+"2"); ////Excel.Range rangeCol = (Excel.Range)ws.get_Range(ws.Cells[2, 1], ws.Cells[2, ColCount]); //object[,] arycol = (object[,])(rangeCol.Value2); ////arycol = new object[,] { { "序号", "订单号", "发动机号", "工位号", "测量位置", "测量项目", "测量值", "测量单位", "理论值", "上限值", "下限值", "合格标志", "生产日期" } }; //arycol = ColsArray; ////for (int j = 1; j < SourceTable.Columns.Count + 1; j++) ////{ //// arycol[1, j] = SourceTable.Columns[j - 1].ColumnName.ToString(); ////} //rangeCol.Value2 = arycol; //rangeCol.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; //rangeCol.Borders.LineStyle = 1; //设置单元格边框的粗细 ////rangeCol.EntireColumn.AutoFit(); //自动调整列宽 //try //{ // ADODB.Connection conn = new ADODB.Connection(); // conn.CommandTimeout = 120; // conn.Open("driver={SQL Server};" + connectionString, "", "", 0); // ADODB.Recordset rs = new ADODB.Recordset(); // rs.Open(sql, conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly, 0); // Microsoft.Office.Interop.Excel.Range range = ws.get_Range("A3", Missing.Value); // //range.CopyFromRecordset(rs, SourceTable.Rows.Count + 3, SourceTable.Columns.Count);//rs, 65535, 65535 // range.CopyFromRecordset(rs, 1000000, 30);//rs, 65535, 65535 // //设置序号 // Microsoft.Office.Interop.Excel.Range Drange = ws.get_Range("A3","A"+(Count+2).ToString()); // Microsoft.Office.Interop.Excel.Range DrangeFirst = ws.get_Range("A3"); // DrangeFirst.Value2 = 1; // Drange.DataSeries(Missing.Value, Microsoft.Office.Interop.Excel.XlDataSeriesType.xlDataSeriesLinear, Microsoft.Office.Interop.Excel.XlDataSeriesDate.xlDay, 1, Count, false); // //设置日期格式 // //int index = SourceTable.Columns["生产日期"].Ordinal + 1; // Microsoft.Office.Interop.Excel.Range rangeDate = ws.get_Range(LastCol + "3", LastCol + (Count + 2).ToString()); // rangeDate.NumberFormatLocal = @"yyyy-mm-dd hh:mm";//日期型格式 // Microsoft.Office.Interop.Excel.Range RangeOfAll = ws.get_Range("A3", LastCol + (Count + 2).ToString()); // RangeOfAll.Borders.LineStyle = 1; //设置单元格边框的粗细 // RangeOfAll.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; // RangeOfAll.EntireColumn.AutoFit(); //自动调整列宽 // //设置不合格的就为红色 // Microsoft.Office.Interop.Excel.FormatCondition cond = // (Microsoft.Office.Interop.Excel.FormatCondition)RangeOfAll.FormatConditions.Add(Microsoft.Office.Interop.Excel.XlFormatConditionType.xlExpression, // Missing.Value, "=$L1=0", Missing.Value); // cond.Interior.PatternColorIndex = Microsoft.Office.Interop.Excel.Constants.xlAutomatic; // cond.Interior.TintAndShade = 0; // cond.Interior.Color = ColorTranslator.ToWin32(Color.Red); // cond.StopIfTrue = false; //} //catch (Exception ex) //{ // string str = ex.Message; //} //finally //{ // wb.Saved = true; // wb.SaveCopyAs(fileName);//保存 // //excel.SaveWorkspace(fileName); // //app.Quit();//关闭进程 // wb.Close(); // excel.Quit(); // GC.Collect(); //} } /// /// 工件总成质量数据报表 /// 引用页QualityData_Query_2.aspx(质量数据导出excel) /// /// /// /// public static void ExcelTable_QualityData_Query_xml_Direct(ref string sql, ref string fileName, ref int Count, ref int ColCount, ref object[,] ColsArray) { //新建一个excel string connectionString = ApplicationConfiguration.ERP_ConnectionString; //Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); //excel.Application.Workbooks.Add(true); //Microsoft.Office.Interop.Excel.Workbook wb = (Microsoft.Office.Interop.Excel.Workbook)excel.Application.Workbooks[1]; //excel.Visible = false; //Microsoft.Office.Interop.Excel.Worksheet ws = new Microsoft.Office.Interop.Excel.Worksheet(); //ws = (Microsoft.Office.Interop.Excel.Worksheet)excel.ActiveSheet; //ws.Name = "Sheet1";//新建的Table名称 //string LastCol = GetLastCellName(ColCount); ////设置头 //Microsoft.Office.Interop.Excel.Range rangeHeader = ws.get_Range("A1", LastCol+"1"); //rangeHeader.Merge(0); //ws.Cells[1, 1] = "工件总成质量数据报表"; ////rangeHeader.Font.Name = "黑体"; //rangeHeader.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; ////rangeHeader.Borders.LineStyle = 1; //设置单元格边框的粗细 ////rangeHeader.EntireColumn.AutoFit(); //自动调整列宽 ////序号,订单号,总成型号,总成流水号,工序号,工序名称,托盘编号,操作者,测量位置,数据1类型,数据1理论值上限,数据1,数据1理论值下限,数据1单位,数据2类型,数据2理论值上限,数据2,数据2理论值下限,数据2单位,工序状况,总合格标志,生产日期 ////Orientation = 90以90度进行旋转 ////第二部设置列头 //Microsoft.Office.Interop.Excel.Range rangeCol = ws.get_Range("A2", LastCol+"2"); ////Excel.Range rangeCol = (Excel.Range)ws.get_Range(ws.Cells[2, 1], ws.Cells[2, ColCount]); //object[,] arycol = (object[,])(rangeCol.Value2); ////arycol = new object[,] ////{{ GetColumnName_Ver("序号"), //// GetColumnName_Ver("订单号"), //// GetColumnName_Ver("总成型号"), //// GetColumnName_Ver("总成流水号"), //// GetColumnName_Ver("工序号"), //// GetColumnName_Ver("工序名称"), //// GetColumnName_Ver("托盘编号"), //// GetColumnName_Ver("操作者"), //// GetColumnName_Ver("测量位置"), //// GetColumnName_Ver("数据1类型"), //// GetColumnName_Ver("数据1理论值上限 "), //// GetColumnName_Ver("数据1"), //// GetColumnName_Ver("数据1理论值下限 "), //// GetColumnName_Ver("数据1单位"), //// GetColumnName_Ver("数据2类型"), //// GetColumnName_Ver("数据2理论值上限 "), //// GetColumnName_Ver("数据2"), //// GetColumnName_Ver("数据2理论值下限 "), //// GetColumnName_Ver("数据2单位"), //// GetColumnName_Ver("工序状况"), //// GetColumnName_Ver("总合格标志"), //// GetColumnName_Ver("生产日期") ////} }; //arycol = ColsArray; //rangeCol.Value2 = arycol; //rangeCol.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; //rangeCol.VerticalAlignment = Microsoft.Office.Interop.Excel.Constants.xlTop; //rangeCol.Borders.LineStyle = 1; //设置单元格边框的粗细 ////rangeCol.EntireColumn.AutoFit(); //自动调整列宽 ////rangeCol.Orientation = 90; //try //{ // ADODB.Connection conn = new ADODB.Connection(); // conn.CommandTimeout = 120; // conn.Open("driver={SQL Server};" + connectionString, "", "", 0); // ADODB.Recordset rs = new ADODB.Recordset(); // rs.Open(sql, conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly, 0); // Microsoft.Office.Interop.Excel.Range range = ws.get_Range("A3", Missing.Value); // //range.CopyFromRecordset(rs, SourceTable.Rows.Count + 3, SourceTable.Columns.Count);//rs, 65535, 65535 // range.CopyFromRecordset(rs, 1000000, 30);//rs, 65535, 65535 // //设置序号 // Microsoft.Office.Interop.Excel.Range Drange = ws.get_Range("A3", "A" + (Count + 2).ToString()); // Microsoft.Office.Interop.Excel.Range DrangeFirst = ws.get_Range("A3"); // DrangeFirst.Value2 = 1; // Drange.DataSeries(Missing.Value, Microsoft.Office.Interop.Excel.XlDataSeriesType.xlDataSeriesLinear, Microsoft.Office.Interop.Excel.XlDataSeriesDate.xlDay, 1, Count, false); // //设置日期格式 // //int index = SourceTable.Columns["生产日期"].Ordinal + 1; // Microsoft.Office.Interop.Excel.Range rangeDate = ws.get_Range(LastCol+"3", LastCol + (Count + 2).ToString()); // rangeDate.NumberFormatLocal = @"yyyy-mm-dd hh:mm";//日期型格式 // Microsoft.Office.Interop.Excel.Range RangeOfAll = ws.get_Range("A3", LastCol + (Count + 2).ToString()); // RangeOfAll.Borders.LineStyle = 1; //设置单元格边框的粗细 // RangeOfAll.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; // RangeOfAll.EntireColumn.AutoFit(); //自动调整列宽 // //设置工序状况不合格的就为红色 // Microsoft.Office.Interop.Excel.Range RangeOfgongxu = ws.get_Range("T3", "T" + (Count + 2).ToString()); // Microsoft.Office.Interop.Excel.FormatCondition cond = // (Microsoft.Office.Interop.Excel.FormatCondition)RangeOfgongxu.FormatConditions.Add(Microsoft.Office.Interop.Excel.XlFormatConditionType.xlExpression, // Missing.Value, @"=$T1=""NOK""", Missing.Value); // cond.Interior.PatternColorIndex = Microsoft.Office.Interop.Excel.Constants.xlAutomatic; // cond.Interior.TintAndShade = 0; // cond.Interior.Color = ColorTranslator.ToWin32(Color.Red); // cond.StopIfTrue = false; // //设置工序状况不合格的就为红色 // Microsoft.Office.Interop.Excel.Range RangeOfhege = ws.get_Range("U3", "U" + (Count + 2).ToString()); // Microsoft.Office.Interop.Excel.FormatCondition cond2 = // (Microsoft.Office.Interop.Excel.FormatCondition)RangeOfhege.FormatConditions.Add(Microsoft.Office.Interop.Excel.XlFormatConditionType.xlExpression, // Missing.Value, @"=$U1=""NOK""", Missing.Value); // cond2.Interior.PatternColorIndex = Microsoft.Office.Interop.Excel.Constants.xlAutomatic; // cond2.Interior.TintAndShade = 0; // cond2.Interior.Color = ColorTranslator.ToWin32(Color.Red); // cond2.StopIfTrue = false; //} //catch (Exception ex) //{ // string str = ex.Message; //} //finally //{ // wb.Saved = true; // wb.SaveCopyAs(fileName);//保存 // //excel.SaveWorkspace(fileName); // //app.Quit();//关闭进程 // wb.Close(); // excel.Quit(); // GC.Collect(); //} } /// /// 不合格质量数据报表 /// /// /// /// public static void ExcelTable_QualityData_Query2(ref string sql, ref string fileName, ref int Count, ref int ColCount, ref object[,] ColsArray) { //新建一个excel string connectionString = ApplicationConfiguration.ERP_ConnectionString; //Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); //excel.Application.Workbooks.Add(true); //Microsoft.Office.Interop.Excel.Workbook wb = (Microsoft.Office.Interop.Excel.Workbook)excel.Application.Workbooks[1]; //excel.Visible = false; //Microsoft.Office.Interop.Excel.Worksheet ws = new Microsoft.Office.Interop.Excel.Worksheet(); //ws = (Microsoft.Office.Interop.Excel.Worksheet)excel.ActiveSheet; //ws.Name = "Sheet1";//新建的Table名称 //string LastCol = GetLastCellName(ColCount); ////插入图片 //float PicLeft,PicTop; //string imgPath = System.Web.HttpContext.Current.Server.MapPath("~/images/report_icon.jpg"); ////转换成字节,再由字节转换成图片 ////byte[] bytesArr = PicToByteArr(imgPath); ////System.Drawing.Image bmp = ReturnPhoto(bytesArr);//图片数据 ////string imgPath=System.Web.HttpContext.Current.Application. //Microsoft.Office.Interop.Excel.Range rangePic = ws.get_Range("A1", LastCol+"1"); //rangePic.Merge(0); //PicLeft = Convert.ToSingle(rangePic.Left)+2; //PicTop = Convert.ToSingle(rangePic.Top)+ 1; //ws.Shapes.AddPicture(imgPath,Microsoft.Office.Core.MsoTriState.msoFalse, //Microsoft.Office.Core.MsoTriState.msoTrue, //PicLeft,PicTop,(float)305,(float)12); ////设置头 //Microsoft.Office.Interop.Excel.Range rangeHeader = ws.get_Range("A2", LastCol+"2"); //rangeHeader.Merge(0); //ws.Cells[2, 1] = "不合格质量数据报表"; ////rangeHeader.Font.Name = "黑体"; //rangeHeader.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; ////rangeHeader.Borders.LineStyle = 1; //设置单元格边框的粗细 ////rangeHeader.EntireColumn.AutoFit(); //自动调整列宽 ////序号,订单号,总成型号,总成流水号,工序号,工序名称,托盘编号,操作者,测量位置,数据1类型,数据1理论值上限,数据1,数据1理论值下限,数据1单位,数据2类型,数据2理论值上限,数据2,数据2理论值下限,数据2单位,工序状况,总合格标志,生产日期 ////Orientation = 90以90度进行旋转 ////第二部设置列头 //Microsoft.Office.Interop.Excel.Range rangeCol = ws.get_Range("A3", LastCol+"3"); ////Excel.Range rangeCol = (Excel.Range)ws.get_Range(ws.Cells[2, 1], ws.Cells[2, ColCount]); //object[,] arycol = (object[,])(rangeCol.Value2); ////arycol = new object[,] ////{{ GetColumnName_Ver("序号"), //// GetColumnName_Ver("订单号"), //// GetColumnName_Ver("总成型号"), //// GetColumnName_Ver("总成流水号"), //// GetColumnName_Ver("工序号"), //// GetColumnName_Ver("工序名称"), //// GetColumnName_Ver("测量位置"), //// GetColumnName_Ver("数据类型"), //// GetColumnName_Ver("数据理论值上限"), //// GetColumnName_Ver("数据"), //// GetColumnName_Ver("数据理论值下限 "), //// GetColumnName_Ver("备注"), ////} }; //arycol = ColsArray; //rangeCol.Value2 = arycol; //rangeCol.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; //rangeCol.VerticalAlignment = Microsoft.Office.Interop.Excel.Constants.xlTop; //rangeCol.Borders.LineStyle = 1; //设置单元格边框的粗细 ////rangeCol.EntireColumn.AutoFit(); //自动调整列宽 ////rangeCol.Orientation = 90; //try //{ // ADODB.Connection conn = new ADODB.Connection(); // conn.Open("driver={SQL Server};" + connectionString, "", "", 0); // ADODB.Recordset rs = new ADODB.Recordset(); // rs.Open(sql, conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly, 0); // Microsoft.Office.Interop.Excel.Range range = ws.get_Range("A4", Missing.Value); // //range.CopyFromRecordset(rs, SourceTable.Rows.Count + 3, SourceTable.Columns.Count);//rs, 65535, 65535 // range.CopyFromRecordset(rs, 1000000, 30);//rs, 65535, 65535 // //设置序号 // Microsoft.Office.Interop.Excel.Range Drange = ws.get_Range("A4", "A" + (Count + 3).ToString()); // Microsoft.Office.Interop.Excel.Range DrangeFirst = ws.get_Range("A4"); // DrangeFirst.Value2 = 1; // Drange.DataSeries(Missing.Value, Microsoft.Office.Interop.Excel.XlDataSeriesType.xlDataSeriesLinear, Microsoft.Office.Interop.Excel.XlDataSeriesDate.xlDay, 1, Count, false); // Microsoft.Office.Interop.Excel.Range RangeOfAll = ws.get_Range("A4", LastCol + (Count + 3).ToString()); // RangeOfAll.Borders.LineStyle = 1; //设置单元格边框的粗细 // RangeOfAll.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; // RangeOfAll.EntireColumn.AutoFit(); //自动调整列宽 // //设置数据列为红色 // Microsoft.Office.Interop.Excel.Range RangeOfshuju = ws.get_Range("J4", "J" + (Count + 3).ToString()); // RangeOfshuju.Cells.Interior.Color = Color.Red; //} //catch (Exception ex) //{ // string str = ex.Message; //} //finally //{ // wb.Saved = true; // wb.SaveCopyAs(fileName);//保存 // //excel.SaveWorkspace(fileName); // //app.Quit();//关闭进程 // wb.Close(); // excel.Quit(); // GC.Collect(); //} } /// /// 合格质量数据 /// 变速器称重 /// /// /// /// public static void ExcelTable_QualityData_Query_kg(ref string sql, ref string fileName, ref int Count, ref int ColCount, ref object[,] ColsArray) { //新建一个excel string connectionString = ApplicationConfiguration.ERP_ConnectionString; //Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); //excel.Application.Workbooks.Add(true); //Microsoft.Office.Interop.Excel.Workbook wb = (Microsoft.Office.Interop.Excel.Workbook)excel.Application.Workbooks[1]; //excel.Visible = false; //Microsoft.Office.Interop.Excel.Worksheet ws = new Microsoft.Office.Interop.Excel.Worksheet(); //ws = (Microsoft.Office.Interop.Excel.Worksheet)excel.ActiveSheet; //ws.Name = "Sheet1";//新建的Table名称 //string LastCol = GetLastCellName(ColCount); ////设置头 //Microsoft.Office.Interop.Excel.Range rangeHeader = ws.get_Range("A1", LastCol+"1"); //rangeHeader.Merge(0); //ws.Cells[1, 1] = "合格质量数据"; ////rangeHeader.Font.Name = "黑体"; //rangeHeader.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; ////rangeHeader.Borders.LineStyle = 1; //设置单元格边框的粗细 ////rangeHeader.EntireColumn.AutoFit(); //自动调整列宽 ////序号,发动机号,工件重量,抽油后重量,重量差,允许重量差,合格标志,操作时间 ////Orientation = 90以90度进行旋转 ////第二部设置列头 //Microsoft.Office.Interop.Excel.Range rangeCol = ws.get_Range("A2", LastCol+"2"); ////Excel.Range rangeCol = (Excel.Range)ws.get_Range(ws.Cells[2, 1], ws.Cells[2, ColCount]); //object[,] arycol = (object[,])(rangeCol.Value2); ////arycol = new object[,] { { "序号", "发动机号", "工件重量(kg)", "抽油后重量(kg)", "重量差(kg)", "允许重量差(kg)", "合格标志", "操作时间" } }; //arycol = ColsArray; //rangeCol.Value2 = arycol; //rangeCol.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; //rangeCol.VerticalAlignment = Microsoft.Office.Interop.Excel.Constants.xlTop; //rangeCol.Borders.LineStyle = 1; //设置单元格边框的粗细 ////rangeCol.EntireColumn.AutoFit(); //自动调整列宽 ////rangeCol.Orientation = 90; //try //{ // ADODB.Connection conn = new ADODB.Connection(); // conn.Open("driver={SQL Server};" + connectionString, "", "", 0); // ADODB.Recordset rs = new ADODB.Recordset(); // rs.Open(sql, conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly, 0); // Microsoft.Office.Interop.Excel.Range range = ws.get_Range("A3", Missing.Value); // //range.CopyFromRecordset(rs, SourceTable.Rows.Count + 3, SourceTable.Columns.Count);//rs, 65535, 65535 // range.CopyFromRecordset(rs, 1000000, 30);//rs, 65535, 65535 // //设置序号 // Microsoft.Office.Interop.Excel.Range Drange = ws.get_Range("A3", "A" + (Count + 2).ToString()); // Microsoft.Office.Interop.Excel.Range DrangeFirst = ws.get_Range("A3"); // DrangeFirst.Value2 = 1; // Drange.DataSeries(Missing.Value, Microsoft.Office.Interop.Excel.XlDataSeriesType.xlDataSeriesLinear, Microsoft.Office.Interop.Excel.XlDataSeriesDate.xlDay, 1, Count, false); // //设置日期格式 // //int index = SourceTable.Columns["生产日期"].Ordinal + 1; // Microsoft.Office.Interop.Excel.Range rangeDate = ws.get_Range("J3", "J" + (Count + 2).ToString()); // rangeDate.NumberFormatLocal = @"yyyy-mm-dd hh:mm";//日期型格式 // Microsoft.Office.Interop.Excel.Range RangeOfAll = ws.get_Range("A3", LastCol + (Count + 2).ToString()); // RangeOfAll.Borders.LineStyle = 1; //设置单元格边框的粗细 // RangeOfAll.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; // RangeOfAll.EntireColumn.AutoFit(); //自动调整列宽 // //设置工序状况不合格的就为红色 // Microsoft.Office.Interop.Excel.FormatCondition cond = // (Microsoft.Office.Interop.Excel.FormatCondition)RangeOfAll.FormatConditions.Add(Microsoft.Office.Interop.Excel.XlFormatConditionType.xlExpression, // Missing.Value, "=$I1=0", Missing.Value); // cond.Interior.PatternColorIndex = Microsoft.Office.Interop.Excel.Constants.xlAutomatic; // cond.Interior.TintAndShade = 0; // cond.Interior.Color = ColorTranslator.ToWin32(Color.Red); // cond.StopIfTrue = false; //} //catch (Exception ex) //{ // string str = ex.Message; //} //finally //{ // wb.Saved = true; // wb.SaveCopyAs(fileName);//保存 // //excel.SaveWorkspace(fileName); // //app.Quit();//关闭进程 // wb.Close(); // excel.Quit(); // GC.Collect(); //} } /// /// 人工合格放行 /// /// /// /// public static void ExcelTable_QualityData_Query_okgo(ref string sql, ref string fileName, ref int Count, ref int ColCount, ref object[,] ColsArray) { //新建一个excel //string connectionString = ApplicationConfiguration.ERP_ConnectionString; //Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); //excel.Application.Workbooks.Add(true); //Microsoft.Office.Interop.Excel.Workbook wb = (Microsoft.Office.Interop.Excel.Workbook)excel.Application.Workbooks[1]; //excel.Visible = false; //Microsoft.Office.Interop.Excel.Worksheet ws = new Microsoft.Office.Interop.Excel.Worksheet(); //ws = (Microsoft.Office.Interop.Excel.Worksheet)excel.ActiveSheet; //ws.Name = "Sheet1";//新建的Table名称 //string LastCol = GetLastCellName(ColCount); ////设置头 //Microsoft.Office.Interop.Excel.Range rangeHeader = ws.get_Range("A1", LastCol + "1"); //rangeHeader.Merge(0); //ws.Cells[1, 1] = "人工合格放行"; ////rangeHeader.Font.Name = "黑体"; //rangeHeader.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; ////rangeHeader.Borders.LineStyle = 1; //设置单元格边框的粗细 ////rangeHeader.EntireColumn.AutoFit(); //自动调整列宽 ////序号,发动机号,工件重量,抽油后重量,重量差,允许重量差,合格标志,操作时间 ////Orientation = 90以90度进行旋转 ////第二部设置列头 //Microsoft.Office.Interop.Excel.Range rangeCol = ws.get_Range("A2", LastCol + "2"); ////Excel.Range rangeCol = (Excel.Range)ws.get_Range(ws.Cells[2, 1], ws.Cells[2, ColCount]); //object[,] arycol = (object[,])(rangeCol.Value2); ////arycol = new object[,] { { "序号", "发动机号", "工件重量(kg)", "抽油后重量(kg)", "重量差(kg)", "允许重量差(kg)", "合格标志", "操作时间" } }; //arycol = ColsArray; //rangeCol.Value2 = arycol; //rangeCol.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; //rangeCol.VerticalAlignment = Microsoft.Office.Interop.Excel.Constants.xlTop; //rangeCol.Borders.LineStyle = 1; //设置单元格边框的粗细 ////rangeCol.EntireColumn.AutoFit(); //自动调整列宽 ////rangeCol.Orientation = 90; //try //{ // ADODB.Connection conn = new ADODB.Connection(); // conn.Open("driver={SQL Server};" + connectionString, "", "", 0); // ADODB.Recordset rs = new ADODB.Recordset(); // rs.Open(sql, conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly, 0); // Microsoft.Office.Interop.Excel.Range range = ws.get_Range("A3", Missing.Value); // //range.CopyFromRecordset(rs, SourceTable.Rows.Count + 3, SourceTable.Columns.Count);//rs, 65535, 65535 // range.CopyFromRecordset(rs, 1000000, 30);//rs, 65535, 65535 // //设置序号 // Microsoft.Office.Interop.Excel.Range Drange = ws.get_Range("A3", "A" + (Count + 2).ToString()); // Microsoft.Office.Interop.Excel.Range DrangeFirst = ws.get_Range("A3"); // DrangeFirst.Value2 = 1; // Drange.DataSeries(Missing.Value, Microsoft.Office.Interop.Excel.XlDataSeriesType.xlDataSeriesLinear, Microsoft.Office.Interop.Excel.XlDataSeriesDate.xlDay, 1, Count, false); // //设置日期格式 // //int index = SourceTable.Columns["生产日期"].Ordinal + 1; // Microsoft.Office.Interop.Excel.Range rangeDate = ws.get_Range("F3", "F" + (Count + 2).ToString()); // rangeDate.NumberFormatLocal = @"yyyy-mm-dd hh:mm";//日期型格式 // Microsoft.Office.Interop.Excel.Range RangeOfAll = ws.get_Range("A3", LastCol + (Count + 2).ToString()); // RangeOfAll.Borders.LineStyle = 1; //设置单元格边框的粗细 // RangeOfAll.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; // RangeOfAll.EntireColumn.AutoFit(); //自动调整列宽 // //设置工序状况不合格的就为红色 // //Microsoft.Office.Interop.Excel.FormatCondition cond = // // (Microsoft.Office.Interop.Excel.FormatCondition)RangeOfAll.FormatConditions.Add(Microsoft.Office.Interop.Excel.XlFormatConditionType.xlExpression, // // Missing.Value, "=$I1=0", Missing.Value); // //cond.Interior.PatternColorIndex = Microsoft.Office.Interop.Excel.Constants.xlAutomatic; // //cond.Interior.TintAndShade = 0; // //cond.Interior.Color = ColorTranslator.ToWin32(Color.Red); // //cond.StopIfTrue = false; //} //catch (Exception ex) //{ // string str = ex.Message; //} //finally //{ // wb.Saved = true; // wb.SaveCopyAs(fileName);//保存 // //excel.SaveWorkspace(fileName); // //app.Quit();//关闭进程 // wb.Close(); // excel.Quit(); // GC.Collect(); //} } //ExcelTable /// /// 物料数据 /// /// /// /// public static void ExcelTable_Materials(ref string sql, ref string fileName, ref int Count, ref int ColCount, ref object[,] ColsArray) { //新建一个excel //string connectionString = ApplicationConfiguration.ERP_ConnectionString; //Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); //excel.Application.Workbooks.Add(true); //Microsoft.Office.Interop.Excel.Workbook wb = (Microsoft.Office.Interop.Excel.Workbook)excel.Application.Workbooks[1]; //excel.Visible = false; //Microsoft.Office.Interop.Excel.Worksheet ws = new Microsoft.Office.Interop.Excel.Worksheet(); //ws = (Microsoft.Office.Interop.Excel.Worksheet)excel.ActiveSheet; //ws.Name = "Sheet1";//新建的Table名称 //string LastCol = GetLastCellName(ColCount); ////设置头 //Microsoft.Office.Interop.Excel.Range rangeHeader = ws.get_Range("A1", LastCol+"1"); //rangeHeader.Merge(0); //ws.Cells[1, 1] = "物料数据"; //rangeHeader.Font.Name = "黑体"; //rangeHeader.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; ////rangeHeader.Borders.LineStyle = 1; //设置单元格边框的粗细 ////rangeHeader.EntireColumn.AutoFit(); //自动调整列宽 ////第二部设置列头 //Microsoft.Office.Interop.Excel.Range rangeCol = ws.get_Range("A2", LastCol+"2"); ////Excel.Range rangeCol = (Excel.Range)ws.get_Range(ws.Cells[2, 1], ws.Cells[2, ColCount]); //object[,] arycol = (object[,])(rangeCol.Value2); ////arycol = new object[,] { { "序号", "订单号", "发动机型号", "总成流水号", "工序号", "工序名称", "零件数量", "零件名称", "零件图号", "零件数量", "物料号", "生产厂家" } }; //arycol = ColsArray; //rangeCol.Value2 = arycol; //rangeCol.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; //rangeCol.VerticalAlignment = Microsoft.Office.Interop.Excel.Constants.xlTop; //rangeCol.Borders.LineStyle = 1; //设置单元格边框的粗细 ////rangeCol.EntireColumn.AutoFit(); //自动调整列宽 ////rangeCol.Orientation = 90; //try //{ // ADODB.Connection conn = new ADODB.Connection(); // conn.Open("driver={SQL Server};" + connectionString, "", "", 0); // ADODB.Recordset rs = new ADODB.Recordset(); // rs.Open(sql, conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly, 0); // Microsoft.Office.Interop.Excel.Range range = ws.get_Range("A3", Missing.Value); // //range.CopyFromRecordset(rs, SourceTable.Rows.Count + 3, SourceTable.Columns.Count);//rs, 65535, 65535 // range.CopyFromRecordset(rs, 1000000, 30);//rs, 65535, 65535 // //设置序号 // Microsoft.Office.Interop.Excel.Range Drange = ws.get_Range("A3", "A" + (Count + 2).ToString()); // Microsoft.Office.Interop.Excel.Range DrangeFirst = ws.get_Range("A3"); // DrangeFirst.Value2 = 1; // Drange.DataSeries(Missing.Value, Microsoft.Office.Interop.Excel.XlDataSeriesType.xlDataSeriesLinear, Microsoft.Office.Interop.Excel.XlDataSeriesDate.xlDay, 1, Count, false); // ////设置日期格式 // ////int index = SourceTable.Columns["生产日期"].Ordinal + 1; // //Microsoft.Office.Interop.Excel.Range rangeDate = ws.get_Range("H3", "H" + (Count + 2).ToString()); // //rangeDate.NumberFormatLocal = @"yyyy-mm-dd hh:mm";//日期型格式 // Microsoft.Office.Interop.Excel.Range RangeOfAll = ws.get_Range("A3", LastCol + (Count + 2).ToString()); // RangeOfAll.Borders.LineStyle = 1; //设置单元格边框的粗细 // RangeOfAll.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; // RangeOfAll.EntireColumn.AutoFit(); //自动调整列宽 //} //catch (Exception ex) //{ // string str = ex.Message; //} //finally //{ // wb.Saved = true; // wb.SaveCopyAs(fileName);//保存 // //excel.SaveWorkspace(fileName); // //app.Quit();//关闭进程 // wb.Close(); // excel.Quit(); // GC.Collect(); //} } /// /// 字段名称各个字符中间增加回车,以保证文本竖着书写。 /// /// /// private static string GetColumnName_Ver(string columnName) { string columnName_tr; columnName_tr = ""; for (int i = 0; i < columnName.Length; i++) { columnName_tr = columnName_tr + columnName[i] + Environment.NewLine; } return columnName_tr; } /// /// 将图片转换为字节数组 /// /// 图片的路径 /// 字节数组 public static byte[] PicToByteArr(string path) { System.IO.FileStream fs = new System.IO.FileStream(path,System.IO.FileMode.Open);//将图片写入流中。 int filelength = 0; filelength = (int)fs.Length; //获得文件长度 Byte[] byteArr = new Byte[filelength]; //建树一个字节数组 fs.Read(byteArr,0,filelength); //按字节俭读取 fs.Close(); return byteArr; } /// /// 参数是byte返回图片 /// /// 字节数组 /// 图片 public static System.Drawing.Image ReturnPhoto(byte[] byteArr) { System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArr); System.Drawing.Image img = System.Drawing.Image.FromStream(ms); ms.Close(); return img; } /// /// 根据列和行号得到最终 /// /// /// /// public static string GetLastCellName(int ColCount) { string LastCellName = String.Empty; switch (ColCount) { case 1: LastCellName = "A"; break; case 2: LastCellName = "B"; break; case 3: LastCellName = "C"; break; case 4: LastCellName = "D"; break; case 5: LastCellName = "E"; break; case 6: LastCellName = "F"; break; case 7: LastCellName = "G"; break; case 8: LastCellName = "H"; break; case 9: LastCellName = "I"; break; case 10: LastCellName = "J"; break; case 11: LastCellName = "K"; break; case 12: LastCellName = "L"; break; case 13: LastCellName = "M"; break; case 14: LastCellName = "N"; break; case 15: LastCellName = "O"; break; case 16: LastCellName = "P"; break; case 17: LastCellName = "Q"; break; case 18: LastCellName = "R"; break; case 19: LastCellName = "S"; break; case 20: LastCellName = "T"; break; case 21: LastCellName = "U"; break; case 22: LastCellName = "V"; break; case 23: LastCellName = "W"; break; case 24: LastCellName = "X"; break; case 25: LastCellName = "Y"; break; case 26: LastCellName = "Z"; break; default: break; } return LastCellName; } }