更新1653
This commit is contained in:
2
WindowsFormsApp6/MainForm.Designer.cs
generated
2
WindowsFormsApp6/MainForm.Designer.cs
generated
@@ -379,7 +379,7 @@ namespace WindowsFormsApp6
|
|||||||
this.button5.TabIndex = 3;
|
this.button5.TabIndex = 3;
|
||||||
this.button5.Text = "🎲 模拟数据";
|
this.button5.Text = "🎲 模拟数据";
|
||||||
this.button5.UseVisualStyleBackColor = false;
|
this.button5.UseVisualStyleBackColor = false;
|
||||||
this.button5.Visible = false;
|
this.button5.Visible = true;
|
||||||
this.button5.Click += new System.EventHandler(this.Button5_Click);
|
this.button5.Click += new System.EventHandler(this.Button5_Click);
|
||||||
//
|
//
|
||||||
// buttonExport
|
// buttonExport
|
||||||
|
|||||||
@@ -520,7 +520,7 @@ namespace WindowsFormsApp6
|
|||||||
int hangTime = ConvertSingleRegisterToInt(hangTimeReg[0]);
|
int hangTime = ConvertSingleRegisterToInt(hangTimeReg[0]);
|
||||||
|
|
||||||
// 读取运行速度(D410,1个寄存器,整数,单位:mm/min)
|
// 读取运行速度(D410,1个寄存器,整数,单位:mm/min)
|
||||||
ushort[] runSpeedReg = _modbusMaster.ReadHoldingRegisters(slaveId, 410, 1);
|
ushort[] runSpeedReg = _modbusMaster.ReadHoldingRegisters(slaveId, 410, 5);
|
||||||
int runSpeed = ConvertSingleRegisterToInt(runSpeedReg[0]);
|
int runSpeed = ConvertSingleRegisterToInt(runSpeedReg[0]);
|
||||||
|
|
||||||
// 使用反射获取Form2的私有字段
|
// 使用反射获取Form2的私有字段
|
||||||
@@ -1559,6 +1559,14 @@ namespace WindowsFormsApp6
|
|||||||
|
|
||||||
private void ButtonExport_Click(object sender, EventArgs e)
|
private void ButtonExport_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
// 显示导出选项对话框
|
||||||
|
var exportOptions = ShowExportOptionsDialog();
|
||||||
|
if (exportOptions == null)
|
||||||
|
{
|
||||||
|
// 用户取消了导出
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
SaveFileDialog saveFileDialog = new SaveFileDialog
|
SaveFileDialog saveFileDialog = new SaveFileDialog
|
||||||
{
|
{
|
||||||
Filter = "Excel 文件 (*.xlsx)|*.xlsx",
|
Filter = "Excel 文件 (*.xlsx)|*.xlsx",
|
||||||
@@ -1568,10 +1576,122 @@ namespace WindowsFormsApp6
|
|||||||
|
|
||||||
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
ExportIntegratedReport(saveFileDialog.FileName);
|
ExportIntegratedReport(saveFileDialog.FileName, exportOptions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 显示导出选项对话框
|
||||||
|
/// </summary>
|
||||||
|
private ExportOptions ShowExportOptionsDialog()
|
||||||
|
{
|
||||||
|
// 创建对话框
|
||||||
|
Form optionsDialog = new Form
|
||||||
|
{
|
||||||
|
Text = "选择导出内容",
|
||||||
|
Width = 350,
|
||||||
|
Height = 250,
|
||||||
|
StartPosition = FormStartPosition.CenterParent,
|
||||||
|
FormBorderStyle = FormBorderStyle.FixedDialog,
|
||||||
|
MaximizeBox = false,
|
||||||
|
MinimizeBox = false
|
||||||
|
};
|
||||||
|
|
||||||
|
Label label = new Label
|
||||||
|
{
|
||||||
|
Text = "请选择要导出的测试项目:",
|
||||||
|
Location = new Point(20, 20),
|
||||||
|
AutoSize = true,
|
||||||
|
Font = new Font("微软雅黑", 10F)
|
||||||
|
};
|
||||||
|
|
||||||
|
CheckBox chkAbsorptionTime = new CheckBox
|
||||||
|
{
|
||||||
|
Text = "液体吸收时间",
|
||||||
|
Location = new Point(40, 60),
|
||||||
|
AutoSize = true,
|
||||||
|
Checked = true,
|
||||||
|
Font = new Font("微软雅黑", 9F)
|
||||||
|
};
|
||||||
|
|
||||||
|
CheckBox chkAbsorptionAmount = new CheckBox
|
||||||
|
{
|
||||||
|
Text = "液体吸收量",
|
||||||
|
Location = new Point(40, 90),
|
||||||
|
AutoSize = true,
|
||||||
|
Checked = true,
|
||||||
|
Font = new Font("微软雅黑", 9F)
|
||||||
|
};
|
||||||
|
|
||||||
|
CheckBox chkWickingRate = new CheckBox
|
||||||
|
{
|
||||||
|
Text = "液体芯吸速率",
|
||||||
|
Location = new Point(40, 120),
|
||||||
|
AutoSize = true,
|
||||||
|
Checked = true,
|
||||||
|
Font = new Font("微软雅黑", 9F)
|
||||||
|
};
|
||||||
|
|
||||||
|
Button btnOK = new Button
|
||||||
|
{
|
||||||
|
Text = "确定",
|
||||||
|
DialogResult = DialogResult.OK,
|
||||||
|
Location = new Point(100, 160),
|
||||||
|
Width = 80,
|
||||||
|
Height = 30
|
||||||
|
};
|
||||||
|
|
||||||
|
Button btnCancel = new Button
|
||||||
|
{
|
||||||
|
Text = "取消",
|
||||||
|
DialogResult = DialogResult.Cancel,
|
||||||
|
Location = new Point(190, 160),
|
||||||
|
Width = 80,
|
||||||
|
Height = 30
|
||||||
|
};
|
||||||
|
|
||||||
|
optionsDialog.Controls.AddRange(new Control[] {
|
||||||
|
label,
|
||||||
|
chkAbsorptionTime,
|
||||||
|
chkAbsorptionAmount,
|
||||||
|
chkWickingRate,
|
||||||
|
btnOK,
|
||||||
|
btnCancel
|
||||||
|
});
|
||||||
|
optionsDialog.AcceptButton = btnOK;
|
||||||
|
optionsDialog.CancelButton = btnCancel;
|
||||||
|
|
||||||
|
// 显示对话框
|
||||||
|
if (optionsDialog.ShowDialog(this) == DialogResult.OK)
|
||||||
|
{
|
||||||
|
// 检查是否至少选择了一项
|
||||||
|
if (!chkAbsorptionTime.Checked && !chkAbsorptionAmount.Checked && !chkWickingRate.Checked)
|
||||||
|
{
|
||||||
|
MessageBox.Show("请至少选择一个导出项目!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ExportOptions
|
||||||
|
{
|
||||||
|
IncludeAbsorptionTime = chkAbsorptionTime.Checked,
|
||||||
|
IncludeAbsorptionAmount = chkAbsorptionAmount.Checked,
|
||||||
|
IncludeWickingRate = chkWickingRate.Checked
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导出选项类
|
||||||
|
/// </summary>
|
||||||
|
private class ExportOptions
|
||||||
|
{
|
||||||
|
public bool IncludeAbsorptionTime { get; set; }
|
||||||
|
public bool IncludeAbsorptionAmount { get; set; }
|
||||||
|
public bool IncludeWickingRate { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
private void Button5_Click(object sender, EventArgs e)
|
private void Button5_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
switch (tabControl1.SelectedIndex)
|
switch (tabControl1.SelectedIndex)
|
||||||
@@ -1613,14 +1733,14 @@ namespace WindowsFormsApp6
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ExportIntegratedReport(string filePath)
|
private void ExportIntegratedReport(string filePath, ExportOptions options)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IWorkbook workbook = new XSSFWorkbook();
|
IWorkbook workbook = new XSSFWorkbook();
|
||||||
|
|
||||||
// 创建单个整合的工作表
|
// 创建单个整合的工作表
|
||||||
CreateIntegratedSheet(workbook);
|
CreateIntegratedSheet(workbook, options);
|
||||||
|
|
||||||
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
|
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
|
||||||
{
|
{
|
||||||
@@ -1635,7 +1755,7 @@ namespace WindowsFormsApp6
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CreateIntegratedSheet(IWorkbook workbook)
|
private void CreateIntegratedSheet(IWorkbook workbook, ExportOptions options)
|
||||||
{
|
{
|
||||||
ISheet sheet = workbook.CreateSheet("吸收性测试报告");
|
ISheet sheet = workbook.CreateSheet("吸收性测试报告");
|
||||||
var styles = CreateReportStyles(workbook);
|
var styles = CreateReportStyles(workbook);
|
||||||
@@ -1679,18 +1799,25 @@ namespace WindowsFormsApp6
|
|||||||
|
|
||||||
currentRow++; // 空行
|
currentRow++; // 空行
|
||||||
|
|
||||||
// 3. 创建液体吸收时间部分
|
// 3. 创建液体吸收时间部分(根据选项)
|
||||||
CreateForm1Section(sheet, ref currentRow, sampleCount, dataTable1, styles);
|
if (options.IncludeAbsorptionTime)
|
||||||
|
{
|
||||||
|
CreateForm1Section(sheet, ref currentRow, sampleCount, dataTable1, styles);
|
||||||
|
currentRow++; // 空行
|
||||||
|
}
|
||||||
|
|
||||||
currentRow++; // 空行
|
// 4. 创建液体吸收量部分(根据选项)
|
||||||
|
if (options.IncludeAbsorptionAmount)
|
||||||
|
{
|
||||||
|
CreateForm2Section(sheet, ref currentRow, sampleCount, dataTable2, styles);
|
||||||
|
currentRow++; // 空行
|
||||||
|
}
|
||||||
|
|
||||||
// 4. 创建液体吸收量部分
|
// 5. 创建液体芯吸速率部分(根据选项)
|
||||||
CreateForm2Section(sheet, ref currentRow, sampleCount, dataTable2, styles);
|
if (options.IncludeWickingRate)
|
||||||
|
{
|
||||||
currentRow++; // 空行
|
CreateForm3Section(sheet, ref currentRow, sampleCount, dataTable3, styles);
|
||||||
|
}
|
||||||
// 5. 创建液体芯吸速率部分
|
|
||||||
CreateForm3Section(sheet, ref currentRow, sampleCount, dataTable3, styles);
|
|
||||||
|
|
||||||
// 设置列宽
|
// 设置列宽
|
||||||
sheet.SetColumnWidth(0, 20 * 256);
|
sheet.SetColumnWidth(0, 20 * 256);
|
||||||
|
|||||||
Reference in New Issue
Block a user