using System;
|
|
using System.Data;
|
|
using System.Globalization;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using Forks.Utils.Data;
|
|
using Microsoft.Office.Interop.Excel;
|
|
using Application = Microsoft.Office.Interop.Excel.Application;
|
|
|
|
namespace B3ButcherWeightClient {
|
|
public partial class QueryForm : Form {
|
|
private int textBoxNum;
|
|
private DataSet mResultDataSet = new DataSet();
|
|
|
|
public QueryForm() {
|
|
InitializeComponent();
|
|
}
|
|
|
|
private AutoSizeFormClass asc = new AutoSizeFormClass();
|
|
|
|
private void QueryForm_Load(object sender, EventArgs e) {
|
|
monthCalendar.Visible = false;
|
|
monthCalendar.LostFocus += (s, e1) => { this.monthCalendar.Visible = false; };
|
|
textBoxBeginTime.Text = DateTime.Today.ToString("yyyy-MM-dd") ;
|
|
textBoxEndTime.Text = DateTime.Today.ToString("yyyy-MM-dd") ;
|
|
asc.ControllInitializeSize(this);
|
|
}
|
|
|
|
private void textBoxBeginTime_DoubleClick(object sender, EventArgs e) {
|
|
textBoxNum = 1;
|
|
monthCalendar.Visible = true;
|
|
monthCalendar.Focus();
|
|
}
|
|
|
|
private void textBoxEndTime_DoubleClick(object sender, EventArgs e) {
|
|
textBoxNum = 2;
|
|
monthCalendar.Visible = true;
|
|
monthCalendar.Focus();
|
|
}
|
|
|
|
private void monthCalendar_DateSelected(object sender, DateRangeEventArgs e) {
|
|
if (textBoxNum == 1) {
|
|
textBoxBeginTime.Text = this.monthCalendar.SelectionStart.ToString("yyyy-MM-dd",
|
|
DateTimeFormatInfo.InvariantInfo);
|
|
}
|
|
if (textBoxNum == 2) {
|
|
string str = this.monthCalendar.SelectionStart.ToString("yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo);
|
|
textBoxEndTime.Text = str;
|
|
}
|
|
monthCalendar.Visible = false;
|
|
}
|
|
|
|
private void QueryForm_SizeChanged(object sender, EventArgs e) {
|
|
asc.controlAutoSize(this);
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
NumberColumn.Visible = false;
|
|
IDColumn.Visible = true;
|
|
SeqColumn.Visible = true;
|
|
DateColumn.Visible = true;
|
|
var querySql =
|
|
"select [ID],[Sequence],[PhaseCode],[DateTime],[Livestock_Name],[Weight],[SubWeight],[Weight]+ISNULL([SubWeight],0) as [AllWeight] from [WeightTable] ";
|
|
DoSelect(querySql, "", " order by [DateTime]");
|
|
}
|
|
|
|
//汇总查询
|
|
private void button2_Click(object sender, EventArgs e) {
|
|
//阶段号、级别、头数、重量、扣重、净重
|
|
NumberColumn.Visible = true;
|
|
IDColumn.Visible = false;
|
|
SeqColumn.Visible = false;
|
|
DateColumn.Visible = false;
|
|
string querySql =
|
|
"select [PhaseCode],[Livestock_Name],SUM(1) AS [Number],SUM([Weight]) AS [Weight],SUM([SubWeight]) AS [SubWeight],SUM([Weight]+ISNULL([SubWeight],0)) as [AllWeight] from [WeightTable] ";
|
|
DoSelect(querySql, " group by [PhaseCode],[Livestock_Name]", "order by [PhaseCode]");
|
|
}
|
|
|
|
private void button3_Click(object sender, EventArgs e) {
|
|
//级别、头数、重量、扣重、净重
|
|
NumberColumn.Visible = true;
|
|
IDColumn.Visible = false;
|
|
SeqColumn.Visible = false;
|
|
DateColumn.Visible = false;
|
|
string querySql =
|
|
"select [Livestock_Name],SUM(1) AS [Number],SUM([Weight]) AS [Weight],SUM([SubWeight]) AS [SubWeight],SUM([Weight]+ISNULL([SubWeight],0)) as [AllWeight] from [WeightTable] ";
|
|
DoSelect(querySql, " group by [Livestock_Name]", "order by [Livestock_Name]");
|
|
}
|
|
|
|
|
|
private void DoSelect(string querySql, string groupBy,string orderBy) {
|
|
var sql = new StringBuilder();
|
|
sql.Append(querySql);
|
|
|
|
var isAddBegin = !string.IsNullOrEmpty(this.textBoxBeginTime.Text);
|
|
var isAddEnd = !string.IsNullOrEmpty(this.textBoxEndTime.Text);
|
|
|
|
var condition = new StringBuilder();
|
|
|
|
//if(isAddBegin||isAddEnd||isAddLevel)
|
|
sql.Append("where 1=1 ");
|
|
if (isAddBegin)
|
|
condition.Append(string.Format("and [DateTime] >= '{0}' ", this.textBoxBeginTime.Text));
|
|
else {
|
|
condition.Append(string.Format("and [DateTime] >= '{0}' ", DateTime.Today.AddDays(-1).ToShortDateString()));
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(txtShunXuHao.Text))
|
|
{
|
|
condition.Append(string.Format("and [Sequence] = '{0}' ", txtShunXuHao.Text));
|
|
}
|
|
|
|
if (isAddEnd)
|
|
condition.Append(string.Format("and [DateTime] <= '{0} 23:59:59' ", this.textBoxEndTime.Text));
|
|
condition.Append(groupBy);
|
|
condition.Append(orderBy);
|
|
if (condition.Length > 0)
|
|
sql.Append(condition.ToString());
|
|
|
|
using (ISqlUtil sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) {
|
|
try {
|
|
lock (EncodeString.RwLocker) {
|
|
this.mResultDataSet = sqlUtil.ExecuteSql(sql.ToString());
|
|
dataGridView1.DataSource = mResultDataSet.Tables[0];
|
|
}
|
|
sqlUtil.Close();
|
|
} catch (Exception ex) {
|
|
MessageBox.Show(ex.Message);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private void button4_Click(object sender, EventArgs e) {
|
|
if (OutToExcelFromDataGridView("称重数据", dataGridView1, true)) {
|
|
MessageBox.Show("导出数据成功!");
|
|
}
|
|
}
|
|
|
|
public bool OutToExcelFromDataGridView(string title, DataGridView dgv, bool isShowExcel) {
|
|
var titleColumnSpan = 0; //标题的跨列数
|
|
var fileName = ""; //保存的excel文件名
|
|
int columnIndex; //列索引
|
|
if (dgv.Rows.Count == 0)
|
|
return false;
|
|
/*保存对话框*/
|
|
var sfd = new SaveFileDialog();
|
|
sfd.Filter = "导出Excel(*.xlsx)|*.xlsx";
|
|
sfd.FileName = title + DateTime.Now.ToString("yyyyMMddhhmmss");
|
|
if (sfd.ShowDialog() == DialogResult.OK) {
|
|
label2.Text = "数据导出中.....";
|
|
fileName = sfd.FileName;
|
|
/*建立Excel对象*/
|
|
var excel = new Application();
|
|
|
|
excel.Application.Workbooks.Add(true);
|
|
excel.Visible = isShowExcel;
|
|
/*分析标题的跨列数*/
|
|
foreach (DataGridViewColumn column in dgv.Columns) {
|
|
if (column.Visible == true)
|
|
titleColumnSpan++;
|
|
}
|
|
/*合并标题单元格*/
|
|
Worksheet worksheet = (Worksheet)excel.ActiveSheet;
|
|
worksheet.get_Range(worksheet.Cells[1, 1] as Range, worksheet.Cells[1, titleColumnSpan] as Range).Merge();
|
|
/*生成标题*/
|
|
excel.Cells[1, 1] = title;
|
|
SetAlign(excel.Cells[1, 1], XlHAlign.xlHAlignCenter);
|
|
//生成字段名称
|
|
columnIndex = 1;
|
|
for (int i = 0; i < dgv.ColumnCount; i++) {
|
|
if (dgv.Columns[i].Visible == true) {
|
|
excel.Cells[2, columnIndex] = dgv.Columns[i].HeaderText;
|
|
switch (dgv.Columns[i].HeaderText) {
|
|
case "时间":
|
|
((Range)excel.Cells[2, columnIndex]).ColumnWidth = 20;
|
|
break;
|
|
case "级别":
|
|
((Range)excel.Cells[2, columnIndex]).ColumnWidth = 15;
|
|
break;
|
|
}
|
|
SetAlign(excel.Cells[2, columnIndex], XlHAlign.xlHAlignCenter);
|
|
columnIndex++;
|
|
}
|
|
}
|
|
//填充数据
|
|
for (int i = 0; i < dgv.RowCount; i++) {
|
|
columnIndex = 1;
|
|
for (int j = 0; j < dgv.ColumnCount; j++) {
|
|
if (dgv.Columns[j].Visible == true) {
|
|
if (dgv[j, i].ValueType == typeof(string)) {
|
|
excel.Cells[i + 3, columnIndex] = "'" + dgv[j, i].Value;
|
|
} else {
|
|
excel.Cells[i + 3, columnIndex] = dgv[j, i].Value;
|
|
}
|
|
SetAlign(excel.Cells[i + 3, columnIndex], XlHAlign.xlHAlignLeft);
|
|
columnIndex++;
|
|
}
|
|
}
|
|
}
|
|
worksheet.SaveAs(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
|
|
Type.Missing, Type.Missing, Type.Missing);
|
|
|
|
excel.Quit();
|
|
GC.Collect();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private static void SetAlign(Range range, XlHAlign a) {
|
|
range.HorizontalAlignment = a;
|
|
}
|
|
|
|
private void textBoxBeginTime_TextChanged(object sender, EventArgs e) {
|
|
|
|
}
|
|
|
|
}
|
|
}
|