You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

174 lines
7.3 KiB
C#

using DataTable = System.Data.DataTable;
using Workbook = Microsoft.Office.Interop.Excel.Workbook;
using Worksheet = Microsoft.Office.Interop.Excel.Worksheet;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Mesnac.Action.ChemicalWeighing.Report.SolventReport
{
public class Export
{
string FileName = @"D:\WeightExportFile.xlsx";
DataTable dt;
DataTable MoreDataTable;
public void ExportTo(string fileName, DataTable dt1, DataTable dt2, DataTable dt3)
{
//dt = new DataTable();
//dt.Columns.Add("机台", typeof(string));
//dt.Columns.Add("湿混等待时间", typeof(string));
//dt.Columns.Add("RGV等待时间", typeof(string));
//dt.Columns.Add("总等待时间", typeof(string));
//MoreDataTable = new DataTable();
//MoreDataTable.Columns.Add("湿混等待时间", typeof(string));
//MoreDataTable.Columns.Add("RGV等待时间", typeof(string));
//MoreDataTable.Columns.Add("总等待时间", typeof(string));
//MoreDataTable.Columns.Add("起始时间", typeof(string));
//MoreDataTable.Columns.Add("结束时间", typeof(string));
// 使用 Microsoft Office Interop Excel 组件导出 Excel 文件
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
Workbook workbook = excelApp.Workbooks.Add();
//AllExport(workbook);
MoreDataExport(workbook, dt1, dt2, dt3);
// 将 Excel 文件保存到磁盘
try
{
workbook.SaveAs(fileName);
}
catch (Exception e)
{
MessageBox.Show("请重新选择导出路径或关闭已打开的导出文件! " + e);
}
// 关闭 Excel 应用程序和工作簿对象,并释放资源
workbook.Close();
//excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
//System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
}
/// <summary>
/// 数据和导出
/// </summary>
/// <param name="workbook"></param>
private void AllExport(Workbook workbook)
{
//DataTableSum();
Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
worksheet.Name = "总量统计";
worksheet.Cells[1, 1] = "机台";
worksheet.Cells[1, 2] = "湿混等待时间";
worksheet.Cells[1, 3] = "RGV等待时间";
worksheet.Cells[1, 4] = "总等待时间";
int row = 2;
//读取数据
foreach (DataRow item in dt.Rows)
{
worksheet.Cells[row, 1] = item[0];
worksheet.Cells[row, 2] = item[1];
worksheet.Cells[row, 3] = item[2];
worksheet.Cells[row, 4] = item[3];
row++;
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
}
//详细数据导出
private void MoreDataExport(Workbook workbook, DataTable dt1, DataTable dt2, DataTable dt3)
{
for (int i = 1; i <= 3; i++)
{
if (i == 1)
{
Worksheet worksheet = (Worksheet)workbook.Worksheets.Add();
worksheet.Name = "执行计划报表";
worksheet.Cells[1, 1] = "执行批次";
worksheet.Cells[1, 2] = "产品名称";
worksheet.Cells[1, 3] = "计划号";
worksheet.Cells[1, 4] = "配方名";
worksheet.Cells[1, 5] = "执行状态";
worksheet.Cells[1, 6] = "计划批次";
worksheet.Cells[1, 7] = "完成批次";
worksheet.Cells[1, 8] = "开始时间";
worksheet.Cells[1, 9] = "结束时间";
worksheet.Cells[1, 10] = "总重量";
worksheet.Cells[1, 11] = "总误差";
int row = 2;
foreach (DataRow item in dt1.Rows)
{
worksheet.Cells[row, 1] = item[0];
worksheet.Cells[row, 2] = item[1];
worksheet.Cells[row, 3] = item[2];
worksheet.Cells[row, 4] = item[4];
worksheet.Cells[row, 5] = item[6];
worksheet.Cells[row, 6] = item[7];
worksheet.Cells[row, 7] = item[8];
worksheet.Cells[row, 8] = item[9];
worksheet.Cells[row, 9] = item[10];
worksheet.Cells[row, 10] = item[13];
worksheet.Cells[row, 11] = item[15];
row++;
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
}
if (i == 2)
{
Worksheet worksheet = (Worksheet)workbook.Worksheets.Add();
worksheet.Name = "执行计划车报表";
worksheet.Cells[1, 1] = "计划号";
worksheet.Cells[1, 2] = "执行批次";
worksheet.Cells[1, 3] = "总计重量";
worksheet.Cells[1, 4] = "总计误差";
int row = 2;
foreach (DataRow item in dt2.Rows)
{
worksheet.Cells[row, 1] = item[1];
worksheet.Cells[row, 2] = item[2];
worksheet.Cells[row, 3] = item[3];
worksheet.Cells[row, 4] = item[4];
row++;
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
}
if (i == 3)
{
Worksheet worksheet = (Worksheet)workbook.Worksheets.Add();
worksheet.Name = "计划详细数据";
worksheet.Cells[1, 1] = "计划号";
worksheet.Cells[1, 2] = "物料名称";
worksheet.Cells[1, 4] = "设定重量";
worksheet.Cells[1, 5] = "实际重量";
worksheet.Cells[1, 6] = "设定误差";
worksheet.Cells[1, 7] = "实际误差";
worksheet.Cells[1, 8] = "固含率";
int row = 2;
foreach (DataRow item in dt3.Rows)
{
worksheet.Cells[row, 1] = item[2];
worksheet.Cells[row, 2] = item[5];
worksheet.Cells[row, 4] = item[6];
worksheet.Cells[row, 5] = item[8];
worksheet.Cells[row, 6] = item[7];
worksheet.Cells[row, 7] = item[9];
worksheet.Cells[row, 8] = item[12];
row++;
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
}
}
}
}
}