zoukankan      html  css  js  c++  java
  • c#中格式化导出Excel数据

    在项目开发过程中经常会遇到数据导出Excel。如果只是导出数据就好办了。但往往用户会有各种格式要求。加粗、边框、合并单元格、汇总等功能。

    以下的方法是基于Excel模版方式写入数据导出的功能。可以最大满足用户的格式需求。可以提前所相应的数据列设置好对齐方式,是否加粗、数据格式、保留小数位。对文本型的数据一定要设置成文本格式,不然像数字型的字符串就会出现类似于3.4E+17这格式。

    注意Excel中下标是从1,1开始的。

    合并单元格方法:

    Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Sheets[1];
    Microsoft.Office.Interop.Excel.Range range = ws.get_Range(ws.Cells[x0, y0], ws.Cells[x1, y1]);
    range.Merge();
    

      

    单元格增加边框:

    Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Sheets[1];
    Microsoft.Office.Interop.Excel.Range range = ws.get_Range(ws.Cells[x0, y0], ws.Cells[x1, y1]);
    range.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
    

     

    DataTable dt = getdata();//数据来源
                string strFileName = Application.StartupPath + "//file//ExportEmployeeSalary.xls";
    
                string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
                saveFileDialog1.Filter = "Excel 97-2003(*.xls)|*.xls|Excel 2007-2010(*.xls)|*.xlsx|AllFiles|*.*";
                saveFileDialog1.FileName = "工资" + fileName;
    
                Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel.Workbook xlBook = excel.Application.Workbooks.Add(strFileName);
                Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Sheets[1];
                Microsoft.Office.Interop.Excel.Range range;
    
                int rows = 0;
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    rows = i + 4;//从第行开始写数据
                    ws.Cells[rows, 1] = (i + 1).ToString();//序号
                    ws.Cells[rows, 2] = dt.Rows[i]["CompanyInfoName"].ToString();//单位名称
                    ws.Cells[rows, 3] = dt.Rows[i]["EmployeeRealName"].ToString();//姓名
                    ws.Cells[rows, 4] = dt.Rows[i]["IDCard"].ToString();//身份证号码
                    ws.Cells[rows, 5] = dt.Rows[i]["AccruedSalary"].ToString();//应发工资
                    ws.Cells[rows, 6] = dt.Rows[i]["DeductSocial"].ToString();//代扣社保
                    ws.Cells[rows, 7] = dt.Rows[i]["DeductAccumulation"].ToString();//代扣公积金
                    ws.Cells[rows, 8] = dt.Rows[i]["DeductTax"].ToString();//代扣个税
                    ws.Cells[rows, 9] = dt.Rows[i]["DeductOther"].ToString();//代扣其它
                    ws.Cells[rows, 10] = dt.Rows[i]["GrantBonus"].ToString();//代发奖励
                    ws.Cells[rows, 11] = dt.Rows[i]["GrantAchievements"].ToString();//代发绩效
                    ws.Cells[rows, 12] = dt.Rows[i]["GrantdOvertime"].ToString();//代发加班费
                    ws.Cells[rows, 13] = dt.Rows[i]["GrantOther"].ToString();//代发其他
                    ws.Cells[rows, 14] = dt.Rows[i]["RealSalary"].ToString();//实发工资
                    ws.Cells[rows, 15] = dt.Rows[i]["SalaryMonth"].ToString();//工资月份
                    ws.Cells[rows, 16] = dt.Rows[i]["ReMark"].ToString();//备注 
                }
                range = ws.get_Range(ws.Cells[4, 1], ws.Cells[dt.Rows.Count + 3, 16]);
                range.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
    
                excel.Visible = false;
                excel.DisplayAlerts = false;
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    string localFilePath = saveFileDialog1.FileName.ToString();
                    xlBook.SaveCopyAs(localFilePath);
                }
    
                xlBook.Close();
                excel.Quit();
                excel = null;
                GC.Collect();
    

      

    Excel原格式模版:

    -------------------------------------------------------------------------------------------------------------------------------------------------

    导出结果数据:

  • 相关阅读:
    复利计算
    实验四 主存空间的分配和回收
    0526 Sprint1个人总结 & 《构建之法》第八、九、十章
    实验三 进程调度模拟程序
    0427 scrum & 读后感
    0415 评论
    0414 结对2.0
    汉堡包
    0406 结对编程总结
    读《构建之法》第四章有感
  • 原文地址:https://www.cnblogs.com/web369/p/4156125.html
Copyright © 2011-2022 走看看