|
|
|
@ -37,6 +37,7 @@ using SparkClient.Model.Attributes; |
|
|
|
|
using SparkClient.Model.Common; |
|
|
|
|
using PaperSize = System.Drawing.Printing.PaperSize; |
|
|
|
|
using SharpDX.Direct2D1.Effects; |
|
|
|
|
using Exception = System.Exception; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace SparkClient.ViewModel.Grading; |
|
|
|
@ -1963,17 +1964,17 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
[Log] |
|
|
|
|
private void ExecuteThermalPrint(object parameter) |
|
|
|
|
{ |
|
|
|
|
MessageBox messageBox = new MessageBox(); |
|
|
|
|
MessageBoxResult boxResult = messageBox.ShowAsk(MultilingualHelper.getString("YesOrNo")); |
|
|
|
|
if (boxResult != MessageBoxResult.OK) |
|
|
|
|
{ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
string tempFilePath = string.Empty; |
|
|
|
|
Microsoft.Office.Interop.Excel.Application excelApp = null; |
|
|
|
|
string tempFilePath = string.Empty; |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
MessageBox messageBox = new MessageBox(); |
|
|
|
|
MessageBoxResult boxResult = messageBox.ShowAsk(MultilingualHelper.getString("YesOrNo")); |
|
|
|
|
if (boxResult != MessageBoxResult.OK) |
|
|
|
|
{ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 步骤2:加载模板并填充数据 |
|
|
|
|
tempFilePath = GenerateTempExcelFile(); |
|
|
|
|
|
|
|
|
@ -1983,11 +1984,21 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
excelApp.DisplayAlerts = false; // 禁用警告提示 |
|
|
|
|
|
|
|
|
|
Microsoft.Office.Interop.Excel.Workbook workbook = excelApp.Workbooks.Open(tempFilePath); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
string printName = ConfigurationHelper.ReadConfigValue("PrintName"); |
|
|
|
|
string? targetPrinter = System.Drawing.Printing.PrinterSettings.InstalledPrinters |
|
|
|
|
.Cast<string>() |
|
|
|
|
.FirstOrDefault(p => p.Contains(printName)); |
|
|
|
|
if (targetPrinter == null) |
|
|
|
|
{ |
|
|
|
|
throw new Exception($"未找到打印机{printName}"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 打印配置 |
|
|
|
|
workbook.PrintOut( |
|
|
|
|
Copies: 1, |
|
|
|
|
Preview: false // 禁用打印预览 |
|
|
|
|
Preview: false, |
|
|
|
|
ActivePrinter: targetPrinter |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// 关闭工作簿(不保存修改) |
|
|
|
@ -2312,86 +2323,94 @@ public class GradingResultVM : BaseViewModel |
|
|
|
|
|
|
|
|
|
private string GenerateTempExcelFile() |
|
|
|
|
{ |
|
|
|
|
string TemplatePath = @"Resource\ResultReport.xlsx"; |
|
|
|
|
using (FileStream templateStream = new FileStream(TemplatePath, FileMode.Open, FileAccess.Read)) |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
IWorkbook workbook = new XSSFWorkbook(templateStream); |
|
|
|
|
ISheet sheet = workbook.GetSheetAt(0); |
|
|
|
|
|
|
|
|
|
//Row 1 |
|
|
|
|
SetCellValue(sheet, "A1", $"{MultilingualHelper.getString("Organization")}:{Standard}"); |
|
|
|
|
SetCellValue(sheet, "B1", $"{MultilingualHelper.getString("DiamondResultShape")}:{Shape}"); |
|
|
|
|
SetCellValue(sheet, "C1", $"{MultilingualHelper.getString("Code")}:{DiamondCode}"); |
|
|
|
|
SetCellValue(sheet, "E1", $"{MultilingualHelper.getString("Wight")}:{Wight}ct."); |
|
|
|
|
//Row 2 |
|
|
|
|
SetCellValue(sheet, "A2", $"{MultilingualHelper.getString("Parameters")}"); |
|
|
|
|
SetCellValue(sheet, "B2", $"{MultilingualHelper.getString("DiamondResultGridAvgValue")}"); |
|
|
|
|
SetCellValue(sheet, "C2", $"{MultilingualHelper.getString("Interval")}(Min~Max)"); |
|
|
|
|
SetCellValue(sheet, "D2", $"{MultilingualHelper.getString("DiamondResultGridCutLevel")}"); |
|
|
|
|
SetCellValue(sheet, "E2", $"{MultilingualHelper.getString("DiamondResultSymmetryGrade")}"); |
|
|
|
|
//Row 3 |
|
|
|
|
var row3 = getSelectData("DIAMETER"); |
|
|
|
|
SetCellValue(sheet, "A3", $"{GetName("DIAMETER")}(mm)"); |
|
|
|
|
SetCellValue(sheet, "B3", $"{row3.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C3", $"({row3.Min}~{row3.Max})"); |
|
|
|
|
SetCellValue(sheet, "D3", "--"); |
|
|
|
|
SetCellValue(sheet, "E3", $"{row3.SymLevel}"); |
|
|
|
|
//Row 4 |
|
|
|
|
var row4 = getSelectData("TOTAL_DEPTH"); |
|
|
|
|
SetCellValue(sheet, "A4", $"{GetName("TOTAL_DEPTH")}(%)"); |
|
|
|
|
SetCellValue(sheet, "B4", $"{row4.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C4", "--"); |
|
|
|
|
SetCellValue(sheet, "D4", $"{row4.CutLevel}"); |
|
|
|
|
SetCellValue(sheet, "E4", "--"); |
|
|
|
|
// Row 5 |
|
|
|
|
var row5 = getSelectData("TABLE"); |
|
|
|
|
SetCellValue(sheet, "A5", $"{GetName("TABLE")}(%)"); |
|
|
|
|
SetCellValue(sheet, "B5", $"{row5.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C5", $"({row5.Min}~{row5.Max})"); |
|
|
|
|
SetCellValue(sheet, "D5", $"{row5.CutLevel}"); |
|
|
|
|
SetCellValue(sheet, "E5", "--"); |
|
|
|
|
var row6 = getSelectData("CROWN_ANGLE"); |
|
|
|
|
SetCellValue(sheet, "A6", $"{GetName("CROWN_ANGLE")}(°)"); |
|
|
|
|
SetCellValue(sheet, "B6", $"{row6.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C6", $"({row6.Min}~{row6.Max})"); |
|
|
|
|
SetCellValue(sheet, "D6", $"{row6.CutLevel}"); |
|
|
|
|
SetCellValue(sheet, "E6", $"{row6.SymLevel}"); |
|
|
|
|
var row7 = getSelectData("CROWN_HEIGHT"); |
|
|
|
|
SetCellValue(sheet, "A7", $"{GetName("CROWN_HEIGHT")}(%)"); |
|
|
|
|
SetCellValue(sheet, "B7", $"{row7.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C7", $"({row7.Min}~{row7.Max})"); |
|
|
|
|
SetCellValue(sheet, "D7", $"{row7.CutLevel}"); |
|
|
|
|
SetCellValue(sheet, "E7", $"{row7.SymLevel}"); |
|
|
|
|
var row8 = getSelectData("GIRDLE"); |
|
|
|
|
SetCellValue(sheet, "A8", $"{GetName("GIRDLE")}(%)"); |
|
|
|
|
SetCellValue(sheet, "B8", $"{row8.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C8", $"({row8.Min}~{row8.Max})"); |
|
|
|
|
SetCellValue(sheet, "D8", $"{row8.CutLevel}"); |
|
|
|
|
SetCellValue(sheet, "E8", $"{row8.SymLevel}"); |
|
|
|
|
var row9 = getSelectData("PAV_DEPTH"); |
|
|
|
|
SetCellValue(sheet, "A9", $"{GetName("PAV_DEPTH")}(%)"); |
|
|
|
|
SetCellValue(sheet, "B9", $"{row9.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C9", $"({row9.Min}~{row9.Max})"); |
|
|
|
|
SetCellValue(sheet, "D9", $"{row9.CutLevel}"); |
|
|
|
|
SetCellValue(sheet, "E9", $"{row9.SymLevel}"); |
|
|
|
|
//row 10 |
|
|
|
|
//Row 11 |
|
|
|
|
SetCellValue(sheet, "A11", $"{MultilingualHelper.getString("CuttingGrade")}"); |
|
|
|
|
SetCellValue(sheet, "B11", $"{CutLevelTotal}"); |
|
|
|
|
//Row 12 |
|
|
|
|
SetCellValue(sheet, "A12", $"{MultilingualHelper.getString("SymmetryLevel")}"); |
|
|
|
|
SetCellValue(sheet, "B12", $"{SymLevelTotal}"); |
|
|
|
|
SetCellValue(sheet, "C12", $"{MultilingualHelper.getString("DateOfIssue")}: {DateTime.Now:yyyy/M/d}"); |
|
|
|
|
// 生成临时文件路径 |
|
|
|
|
string tempFile = Path.Combine( |
|
|
|
|
Path.GetTempPath(), |
|
|
|
|
$"DiamondReport_{DateTime.Now:yyyyMMddHHmmss}.xlsx"); |
|
|
|
|
|
|
|
|
|
using (FileStream fs = new FileStream(tempFile, FileMode.Create)) |
|
|
|
|
string TemplatePath = @"Resource\ResultReport.xlsx"; |
|
|
|
|
using (FileStream templateStream = new FileStream(TemplatePath, FileMode.Open, FileAccess.Read)) |
|
|
|
|
{ |
|
|
|
|
workbook.Write(fs); |
|
|
|
|
IWorkbook workbook = new XSSFWorkbook(templateStream); |
|
|
|
|
ISheet sheet = workbook.GetSheetAt(0); |
|
|
|
|
|
|
|
|
|
//Row 1 |
|
|
|
|
SetCellValue(sheet, "A1", $"{MultilingualHelper.getString("Organization")}:{Standard}"); |
|
|
|
|
SetCellValue(sheet, "B1", $"{MultilingualHelper.getString("DiamondResultShape")}:{Shape}"); |
|
|
|
|
SetCellValue(sheet, "C1", $"{MultilingualHelper.getString("Code")}:{DiamondCode}"); |
|
|
|
|
SetCellValue(sheet, "E1", $"{MultilingualHelper.getString("Wight")}:{Wight}ct."); |
|
|
|
|
//Row 2 |
|
|
|
|
SetCellValue(sheet, "A2", $"{MultilingualHelper.getString("Parameters")}"); |
|
|
|
|
SetCellValue(sheet, "B2", $"{MultilingualHelper.getString("DiamondResultGridAvgValue")}"); |
|
|
|
|
SetCellValue(sheet, "C2", $"{MultilingualHelper.getString("Interval")}(Min~Max)"); |
|
|
|
|
SetCellValue(sheet, "D2", $"{MultilingualHelper.getString("DiamondResultGridCutLevel")}"); |
|
|
|
|
SetCellValue(sheet, "E2", $"{MultilingualHelper.getString("DiamondResultSymmetryGrade")}"); |
|
|
|
|
//Row 3 |
|
|
|
|
var row3 = getSelectData("DIAMETER"); |
|
|
|
|
SetCellValue(sheet, "A3", $"{GetName("DIAMETER")}(mm)"); |
|
|
|
|
SetCellValue(sheet, "B3", $"{row3.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C3", $"({row3.Min}~{row3.Max})"); |
|
|
|
|
SetCellValue(sheet, "D3", "--"); |
|
|
|
|
SetCellValue(sheet, "E3", $"{row3.SymLevel}"); |
|
|
|
|
//Row 4 |
|
|
|
|
var row4 = getSelectData("TOTAL_DEPTH"); |
|
|
|
|
SetCellValue(sheet, "A4", $"{GetName("TOTAL_DEPTH")}(%)"); |
|
|
|
|
SetCellValue(sheet, "B4", $"{row4.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C4", "--"); |
|
|
|
|
SetCellValue(sheet, "D4", $"{row4.CutLevel}"); |
|
|
|
|
SetCellValue(sheet, "E4", "--"); |
|
|
|
|
// Row 5 |
|
|
|
|
var row5 = getSelectData("TABLE"); |
|
|
|
|
SetCellValue(sheet, "A5", $"{GetName("TABLE")}(%)"); |
|
|
|
|
SetCellValue(sheet, "B5", $"{row5.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C5", $"({row5.Min}~{row5.Max})"); |
|
|
|
|
SetCellValue(sheet, "D5", $"{row5.CutLevel}"); |
|
|
|
|
SetCellValue(sheet, "E5", "--"); |
|
|
|
|
var row6 = getSelectData("CROWN_ANGLE"); |
|
|
|
|
SetCellValue(sheet, "A6", $"{GetName("CROWN_ANGLE")}(°)"); |
|
|
|
|
SetCellValue(sheet, "B6", $"{row6.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C6", $"({row6.Min}~{row6.Max})"); |
|
|
|
|
SetCellValue(sheet, "D6", $"{row6.CutLevel}"); |
|
|
|
|
SetCellValue(sheet, "E6", $"{row6.SymLevel}"); |
|
|
|
|
var row7 = getSelectData("CROWN_HEIGHT"); |
|
|
|
|
SetCellValue(sheet, "A7", $"{GetName("CROWN_HEIGHT")}(%)"); |
|
|
|
|
SetCellValue(sheet, "B7", $"{row7.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C7", $"({row7.Min}~{row7.Max})"); |
|
|
|
|
SetCellValue(sheet, "D7", $"{row7.CutLevel}"); |
|
|
|
|
SetCellValue(sheet, "E7", $"{row7.SymLevel}"); |
|
|
|
|
var row8 = getSelectData("GIRDLE"); |
|
|
|
|
SetCellValue(sheet, "A8", $"{GetName("GIRDLE")}(%)"); |
|
|
|
|
SetCellValue(sheet, "B8", $"{row8.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C8", $"({row8.Min}~{row8.Max})"); |
|
|
|
|
SetCellValue(sheet, "D8", $"{row8.CutLevel}"); |
|
|
|
|
SetCellValue(sheet, "E8", $"{row8.SymLevel}"); |
|
|
|
|
var row9 = getSelectData("PAV_DEPTH"); |
|
|
|
|
SetCellValue(sheet, "A9", $"{GetName("PAV_DEPTH")}(%)"); |
|
|
|
|
SetCellValue(sheet, "B9", $"{row9.Avg}"); |
|
|
|
|
SetCellValue(sheet, "C9", $"({row9.Min}~{row9.Max})"); |
|
|
|
|
SetCellValue(sheet, "D9", $"{row9.CutLevel}"); |
|
|
|
|
SetCellValue(sheet, "E9", $"{row9.SymLevel}"); |
|
|
|
|
//row 10 |
|
|
|
|
//Row 11 |
|
|
|
|
SetCellValue(sheet, "A11", $"{MultilingualHelper.getString("CuttingGrade")}"); |
|
|
|
|
SetCellValue(sheet, "B11", $"{CutLevelTotal}"); |
|
|
|
|
//Row 12 |
|
|
|
|
SetCellValue(sheet, "A12", $"{MultilingualHelper.getString("SymmetryLevel")}"); |
|
|
|
|
SetCellValue(sheet, "B12", $"{SymLevelTotal}"); |
|
|
|
|
SetCellValue(sheet, "C12", $"{MultilingualHelper.getString("DateOfIssue")}: {DateTime.Now:yyyy/M/d}"); |
|
|
|
|
// 生成临时文件路径 |
|
|
|
|
string tempFile = Path.Combine( |
|
|
|
|
Path.GetTempPath(), |
|
|
|
|
$"DiamondReport_{DateTime.Now:yyyyMMddHHmmss}.xlsx"); |
|
|
|
|
|
|
|
|
|
using (FileStream fs = new FileStream(tempFile, FileMode.Create)) |
|
|
|
|
{ |
|
|
|
|
workbook.Write(fs); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return tempFile; |
|
|
|
|
} |
|
|
|
|
return tempFile; |
|
|
|
|
} |
|
|
|
|
catch (Exception e) |
|
|
|
|
{ |
|
|
|
|
throw e; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|