客运综合管理系统项目—附加(数据的导出)

本文介绍了客运综合管理系统中数据导出的实现过程,包括涉及的数据库表结构、逻辑层BLL代码展示以及界面层UIL的load事件添加,详细展示了从打开文件到新建文件直至数据导出的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.数据的导出

                                                                                                                              2(图1)

数据库

1.      表与关系


相关的表有

表1.员工表(dbo.StaffList)

列名

数据类型

主键/外键

说明

StaffID

int

主键

员工ID

StaffNumber

char (100)

 

员工编号

StaffName

char (100)

 

员工姓名

Sex

char (100)

 

性别

IdentityCardNumber

char (100)

 

身份证号

HomeLocation

char (100)

 

家庭地址

Phone

char (100)

 

电话

StaffTypeID

int

外键

员工类型表.员工类型ID

OrganizationID

int

外键

机构表.机构ID

StationID

int

外键

站点表.站点ID

Remarks

char (100)

 

备注

LeaveOfficeNo

bit

 

离职否

InvokingNo

bit

 

调用否

Date

datetime

 

日期

Photo

nvarchar (3000)

 

相片


 

(1)与档次数据相关的存储过程

 IF 	@TYPE='frmWagesSettleAccountsSearch_SelectPayAccounts'--数据的绑定(所导出的数据)
    BEGIN
    SELECT     PayAccountsList.PayAccountsID,StaffList.StaffID, --LTRIM(RTRIM(***表.名称))AS 名称,--去空格
               LTRIM(RTRIM(StaffList.StaffNumber))AS StaffNumber, LTRIM(RTRIM(StaffList.StaffName))AS StaffName, 
               LTRIM(RTRIM(StaffList.Phone))AS Phone,StaffTypeList.StaffTypeID,
               LTRIM(RTRIM(StaffTypeList.StaffTypeName))AS StaffTypeName,OrganizationList.OrganizationID, 
               LTRIM(RTRIM(OrganizationList.OrganizationName))AS OrganizationName, StationList.StationID,
               LTRIM(RTRIM(StationList.StationName))AS StationName, PayAccountsList.AccountsDate,PayAccountsList.Rums, 
               PayAccountsList.AccountsOpenDate, PayAccountsList.AccountEndDate,PayAccountsList.DayPay,
               PayAccountsList.OvertimePay,PayAccountsList.AccountNo
    FROM       StaffList INNER JOIN
               PayAccountsList ON StaffList.StaffID = PayAccountsList.StaffID INNER JOIN
               StaffTypeList ON StaffList.StaffTypeID = StaffTypeList.StaffTypeID INNER JOIN
               OrganizationList ON StaffList.OrganizationID = OrganizationList.OrganizationID INNER JOIN
               StationList ON StaffList.StationID = StationList.StationID
END

(2)与档次数据相关的逻辑层(BLL)代码

 [OperationContract]
        public DataSet frmWagesSettleAccountsSearch_SelectPayAccounts()//dgv日常上班(导出数据)
        {
            SqlParameter[] mySqlParameter = { new SqlParameter("@Type", SqlDbType.Char) };
            mySqlParameter[0].Value = "frmWagesSettleAccountsSearch_SelectPayAccounts";
            DataTable myDataTable = myDALMethod.QueryDataTable("BusinessManage_frmWagesSettleAccountsSearch", mySqlParameter);
            DataSet myDataSet = new DataSet();
            myDataSet.Tables.Add(myDataTable);
            return myDataSet;
        }

(3)添加一个DataSet文件


                                     2(图2)

打开文件里面显示如图2(图3)所示


                                                                                                                             2(图3)

新建一个文件


                                                                                                                         2(图4)


                                                                                                                         2(图5)


                                                                                                                              2(图6)


                                                                                             2(图7)


                                                                                                    2(图8)


                                                                                    2(图9)


                                                                                              2(图10)


                                                                                                2(图11)


                                                                                                                 2(图12)

                                                                                                          2(图13)


                                                                                                             2(图14)

(4)与档次数据相关的界面层(UIL)代码

load事件添加:

System.Data.DataTable dtPayAccounts = myfrmWagesSettleAccountsSearchClient.frmWagesSettleAccountsSearch_SelectPayAccounts().Tables[0];
            dgvMerray.DataSource = dtPayAccounts;

            客运综合管理系统DataSet1.Tables["dt"].Merge(dtPayAccounts);//客运综合管理系统DataSet1(新建DataSet文件的名)

private void btnForm_Click(object sender, EventArgs e)//导出数据的按钮
        {
            DataSet myDataSet = new DataSet();//声明一个DataSet
            System.Data.DataTable dtSet = 客运综合管理系统DataSet1.Tables["dt"].Copy();//系统新建的数据集等于已经绑定好的数据集复制出来的数据
            EroprIoExcel("结算信息", dtSet);//导出得到文件夹的命名
        }
        public void EroprIoExcel(string filename, System.Data.DataTable dt)
        {
            if (dt == null) return;//如果没有数据就返回
            string saveFileName = "";
            bool fileSaved = false;
            SaveFileDialog saveDialog = new SaveFileDialog();//初始化保存窗体对话框
            saveDialog.DefaultExt = "xls";
            saveDialog.Filter = "Excel文件|*.xls";//得到文件的格式
            saveDialog.FileName = filename;
            saveDialog.ShowDialog();//显示出数据信息
            saveFileName = saveDialog.FileName;
            if (saveFileName.IndexOf(":") < 0) return;//判断是否有文档软件
            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();//声明Excel
            if (xlApp == null)
            {
                MessageBox.Show("无法创建Excel对象,可能你的机子没有安装Excel");
                return;
            }
            Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
            Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);//默认创建一个worksheet
            Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取消worksheet第一页
            Microsoft.Office.Interop.Excel.Range range;
            long totalCount = dt.Rows.Count;
            long rowRead = 0;
            float percend = 0;
            for (int i = 0; i < dt.Columns.Count; i++)//遍历提取到的报名数据
            {
                Cursor.Current = Cursors.WaitCursor;//获取等待光标
                worksheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;//获取列名
                range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, i + 1];
                range.Interior.ColorIndex = 3;//单元格颜色
                range.Font.Bold = true;
            }
            //写入数据
            for (int r = 0; r < dt.Rows.Count; r++)
            {

                try
                {
                    for (int j = 0; j < dt.Rows.Count; j++)
                    {
                        worksheet.Cells[r + 2, j + 1] = "'" + dt.Rows[r][j];
                    }
                    rowRead++;
                    percend = ((float)(100 * rowRead)) / totalCount;
                    System.Windows.Forms.Application.DoEvents();
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);//系统提示
                }
            }
            if (saveFileName != "")
            {
                try
                {
                    workbook.Saved = true;
                    workbook.SaveCopyAs(saveFileName);
                    fileSaved = true;
                }
                catch (Exception ex)
                {
                    fileSaved = false;
                    MessageBox.Show("导出数据出错,文件可能被打开!\n" + ex.Message);
                }
            }
            else
            {
                fileSaved = false;
            }
            xlApp.Quit();
            GC.Collect();//行除去
            if (fileSaved && File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName);
        }









                                         仅供学习,禁止用于商业用途









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值