예제 #1
0
        public ActionResult LoadPrintStocktaking(string warehouse, string location)
        {
            string strErrText;

            //读取公司名称
            OrganizationSystem organ = new OrganizationSystem();
            List<Organization> listOrgan = organ.LoadOrganizations(LoginAccountId, LoginStaffName, out strErrText);
            if (listOrgan == null)
            {
                throw new Exception(strErrText);
            }
            Organization root = listOrgan.Find(delegate(Organization o) { return o.ParentId == 0; });

            //读取库存数据
            StockSystem stock = new StockSystem();
            List<Stock> listStock = stock.LoadStocktakingByConditions(warehouse, location, LoginAccountId, LoginStaffName, out strErrText);
            if (listStock == null)
            {
                throw new Exception(strErrText);
            }

            //生成HTML
            int nTotalPackages = 0;
            decimal decTotalTunnages = 0;
            decimal decTotalPiles = 0;
            decimal decTotalTenThousands = 0;

            StringBuilder sb = new StringBuilder();

            //标题
            sb.Append("<table border='0' cellpadding='0' cellspacing='0' style='margin-left: auto; margin-right: auto; text-align: left;'>");
            sb.Append("<tr>");
            sb.Append("<td align='center' style='font-size: 20pt; font-weight: bold;'>");
            sb.Append(root.Name);
            sb.Append("</td>");
            sb.Append("</tr>");
            sb.Append("<tr>");
            sb.Append("<td align='center' style='font-size: 16pt;'>");
            sb.Append(InnoSoft.LS.Resources.Titles.Stocktaking);
            sb.Append("</td>");
            sb.Append("</tr>");
            sb.Append("<tr>");
            sb.Append("<td>");

            //表头
            sb.Append("<table id='stocktaking' border='0' cellpadding='0' cellspacing='0'>");
            sb.Append("<tr>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; width: 60px;'>");
            sb.Append(InnoSoft.LS.Resources.Labels.Warehouse);
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; width: 40px;'>");
            sb.Append(InnoSoft.LS.Resources.Labels.Location);
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; width: 120px;'>");
            sb.Append(InnoSoft.LS.Resources.Labels.GoodsNo);
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; width: 150px;'>");
            sb.Append(InnoSoft.LS.Resources.Labels.GoodsName);
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; width: 80px;'>");
            sb.Append(InnoSoft.LS.Resources.Labels.Specification);
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; width: 50px;'>");
            sb.Append(InnoSoft.LS.Resources.Labels.GrammeWeight);
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; width: 50px;'>");
            sb.Append(InnoSoft.LS.Resources.Labels.Grade);
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; width: 200px;'>");
            sb.Append(InnoSoft.LS.Resources.Labels.CustomerName);
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; width: 60px;'>");
            sb.Append(InnoSoft.LS.Resources.Labels.Pieces);
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; width: 80px;'>");
            sb.Append(InnoSoft.LS.Resources.Labels.Tunnages);
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; width: 80px;'>");
            sb.Append(InnoSoft.LS.Resources.Labels.Piles);
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-right: 1px solid black; width: 80px;'>");
            sb.Append(InnoSoft.LS.Resources.Labels.TenThousands);
            sb.Append("</td>");
            sb.Append("</tr>");

            //生成仓库数据
            //var grpWarehouses = from s in listStock
            //                    group s by s.Warehouse;
            var grpWarehouses = listStock.GroupBy(s => s.Warehouse).OrderBy(s => s.Key);
            foreach (var grpWarehouse in grpWarehouses)
            {
                string strWarehouse = grpWarehouse.Key;
                int nWarehouseTotalPackages = grpWarehouse.Sum(s => s.Packages);
                decimal decWarehouseTotalTunnages = grpWarehouse.Sum(s => s.Tunnages);
                decimal decWarehouseTotalPiles = grpWarehouse.Sum(s => s.Piles);
                decimal decWarehouseTotalTenThousands = grpWarehouse.Sum(s => s.TenThousands);

                nTotalPackages += nWarehouseTotalPackages;
                decTotalTunnages += decWarehouseTotalTunnages;
                decTotalPiles += decWarehouseTotalPiles;
                decTotalTenThousands += decWarehouseTotalTenThousands;

                sb.Append("<tr>");
                sb.Append("<td rowspan='").Append((from s in listStock where s.Warehouse == strWarehouse group s by s.Location).Count() + (from s in listStock where s.Warehouse == strWarehouse select s.CustomerId).Count() + 1).Append("' align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                sb.Append(strWarehouse);
                sb.Append("</td>");
                sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                sb.Append("&nbsp;");
                sb.Append("</td>");
                sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                sb.Append("&nbsp;");
                sb.Append("</td>");
                sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                sb.Append("&nbsp;");
                sb.Append("</td>");
                sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                sb.Append("&nbsp;");
                sb.Append("</td>");
                sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                sb.Append("&nbsp;");
                sb.Append("</td>");
                sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                sb.Append("&nbsp;");
                sb.Append("</td>");
                sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                sb.Append("&nbsp;");
                sb.Append("</td>");
                sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                sb.Append(nWarehouseTotalPackages.ToString());
                sb.Append("</td>");
                sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                sb.Append(decWarehouseTotalTunnages.ToString("#0.######"));
                sb.Append("</td>");
                sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                sb.Append(decWarehouseTotalPiles.ToString("#0.######"));
                sb.Append("</td>");
                sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-right: 1px solid black;'>");
                sb.Append(decWarehouseTotalTenThousands.ToString("#0.######"));
                sb.Append("</td>");

                sb.Append("</tr>");

                //生成货位数据
                //var grpLocations = from s in listStock
                //                   where s.Warehouse == strWarehouse
                //                   group s by s.Location;

                var grpLocations = grpWarehouse.GroupBy(s => s.Location).OrderBy(s => s.Key);
                foreach (var grpLocation in grpLocations)
                {
                    string strLocation = grpLocation.Key;
                    int nLocationTotalPackages = grpLocation.Sum(s => s.Packages);
                    decimal decLocationTotalTunnages = grpLocation.Sum(s => s.Tunnages);
                    decimal decLocationTotalPiles = grpLocation.Sum(s => s.Piles);
                    decimal decLocationTotalTenThousands = grpLocation.Sum(s => s.TenThousands);

                    sb.Append("<tr>");
                    sb.Append("<td rowspan='").Append((from s in listStock where s.Warehouse == strWarehouse && s.Location == strLocation select s.CustomerId).Count() + 1).Append("' align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                    sb.Append(strLocation);
                    sb.Append("</td>");
                    sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                    sb.Append("&nbsp;");
                    sb.Append("</td>");
                    sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                    sb.Append("&nbsp;");
                    sb.Append("</td>");
                    sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                    sb.Append("&nbsp;");
                    sb.Append("</td>");
                    sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                    sb.Append("&nbsp;");
                    sb.Append("</td>");
                    sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                    sb.Append("&nbsp;");
                    sb.Append("</td>");
                    sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                    sb.Append("&nbsp;");
                    sb.Append("</td>");
                    sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                    sb.Append(nLocationTotalPackages.ToString());
                    sb.Append("</td>");
                    sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                    sb.Append(decLocationTotalTunnages.ToString("#0.######"));
                    sb.Append("</td>");
                    sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                    sb.Append(decLocationTotalPiles.ToString("#0.######"));
                    sb.Append("</td>");
                    sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-right: 1px solid black;'>");
                    sb.Append(decLocationTotalTenThousands.ToString("#0.######"));
                    sb.Append("</td>");
                    sb.Append("</tr>");

                    //生成货位明细数据
                    //var goods = from s in listStock
                    //            where s.Warehouse == strWarehouse && s.Location == strLocation
                    //            select new
                    //            {
                    //                s.GoodsNo,
                    //                s.GoodsName,
                    //                s.SpecModel,
                    //                s.GWeight,
                    //                s.Grade,
                    //                s.CustomerName,
                    //                s.Packages,
                    //                s.Tunnages
                    //            };

                    var goods = from s in grpLocation
                                select new
                                {
                                    s.GoodsNo,
                                    s.GoodsName,
                                    s.SpecModel,
                                    s.GWeight,
                                    s.Grade,
                                    s.CustomerName,
                                    s.Packages,
                                    s.Tunnages,
                                    s.Piles,
                                    s.TenThousands
                                };

                    foreach (var g in goods)
                    {
                        sb.Append("<tr>");
                        sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                        sb.Append(g.GoodsNo);
                        sb.Append("</td>");
                        sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                        sb.Append(g.GoodsName);
                        sb.Append("</td>");
                        sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                        sb.Append(g.SpecModel);
                        sb.Append("</td>");
                        sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                        sb.Append(g.GWeight);
                        sb.Append("</td>");
                        sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                        sb.Append(g.Grade);
                        sb.Append("</td>");
                        sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                        sb.Append(g.CustomerName);
                        sb.Append("</td>");
                        sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                        sb.Append(g.Packages.ToString());
                        sb.Append("</td>");
                        sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                        sb.Append(g.Tunnages.ToString("#0.######"));
                        sb.Append("</td>");
                        sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black;'>");
                        sb.Append(g.Piles.ToString("#0.######"));
                        sb.Append("</td>");
                        sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-right: 1px solid black;'>");
                        sb.Append(g.TenThousands.ToString("#0.######"));
                        sb.Append("</td>");
                        sb.Append("</tr>");
                    }
                }
            }

            //合计
            sb.Append("<tr>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-bottom: 1px solid black;'>");
            sb.Append(InnoSoft.LS.Resources.Labels.FinalTotal);
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-bottom: 1px solid black;'>");
            sb.Append("&nbsp;");
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-bottom: 1px solid black;'>");
            sb.Append("&nbsp;");
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-bottom: 1px solid black;'>");
            sb.Append("&nbsp;");
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-bottom: 1px solid black;'>");
            sb.Append("&nbsp;");
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-bottom: 1px solid black;'>");
            sb.Append("&nbsp;");
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-bottom: 1px solid black;'>");
            sb.Append("&nbsp;");
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-bottom: 1px solid black;'>");
            sb.Append("&nbsp;");
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-bottom: 1px solid black;'>");
            sb.Append(nTotalPackages.ToString());
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-bottom: 1px solid black;'>");
            sb.Append(decTotalTunnages.ToString("#0.######"));
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-bottom: 1px solid black;'>");
            sb.Append(decTotalPiles.ToString("#0.######"));
            sb.Append("</td>");
            sb.Append("<td align='center' valign='top' style='border-top: 1px solid black; border-left: 1px solid black; border-right: 1px solid black; border-bottom: 1px solid black;'>");
            sb.Append(decTotalTenThousands.ToString("#0.######"));
            sb.Append("</td>");
            sb.Append("</tr>");

            sb.Append("</table>");
            sb.Append("</td>");
            sb.Append("</tr>");
            sb.Append("</table>");

            return Content(sb.ToString());
        }
예제 #2
0
        public ActionResult ExportStocktaking()
        {
            //读取条件
            var request = HttpContext.Request;

            string warehouse = request.QueryString["Warehouse"] ?? string.Empty;
            string location = request.QueryString["Location"] ?? string.Empty;

            //读取库存数据
            string strErrText;
            StockSystem stock = new StockSystem();
            List<Stock> listStock = stock.LoadStocktakingByConditions(warehouse, location, LoginAccountId, LoginStaffName, out strErrText);
            if (listStock == null)
            {
                throw new Exception(strErrText);
            }

            //生成GridView数据源
            int nTotalPackages = 0;
            decimal decTotalTunnages = 0;
            decimal decTotalPiles = 0;
            decimal decTotalTenThousands = 0;

            List<Stock> listSource = new List<Stock>();

            //var grpWarehouses = from s in listStock
            //                    group s by s.Warehouse;
            var grpWarehouses = listStock.GroupBy(s => s.Warehouse).OrderBy(s => s.Key);
            foreach (var grpWarehouse in grpWarehouses)
            {
                string strWarehouse = grpWarehouse.Key;
                int nWarehouseTotalPackages = grpWarehouse.Sum(s => s.Packages);
                decimal decWarehouseTotalTunnages = grpWarehouse.Sum(s => s.Tunnages);
                decimal decWarehouseTotalPiles = grpWarehouse.Sum(s => s.Piles);
                decimal decWarehouseTotalTenThousands = grpWarehouse.Sum(s => s.TenThousands);

                nTotalPackages += nWarehouseTotalPackages;
                decTotalTunnages += decWarehouseTotalTunnages;
                decTotalPiles += decWarehouseTotalPiles;
                decTotalTenThousands += decWarehouseTotalTenThousands;

                //生成货位数据
                //var grpLocations = from s in listStock
                //                   where s.Warehouse == strWarehouse
                //                   group s by s.Location;
                var grpLocations = grpWarehouse.GroupBy(s => s.Location).OrderBy(s => s.Key);
                foreach (var grpLocation in grpLocations)
                {
                    string strLocation = grpLocation.Key;
                    int nLocationTotalPackages = grpLocation.Sum(s => s.Packages);
                    decimal decLocationTotalTunnages = grpLocation.Sum(s => s.Tunnages);
                    decimal decLocationTotalPiles = grpLocation.Sum(s => s.Piles);
                    decimal decLocationTotalTenThousands = grpLocation.Sum(s => s.TenThousands);

                    //生成货位明细数据
                    //var goods = from s in listStock
                    //            where s.Warehouse == strWarehouse && s.Location == strLocation
                    //            select new
                    //            {
                    //                s.GoodsNo,
                    //                s.GoodsName,
                    //                s.SpecModel,
                    //                s.GWeight,
                    //                s.Grade,
                    //                s.CustomerName,
                    //                s.Packages,
                    //                s.Tunnages
                    //            };

                    var goods = from s in grpLocation
                                select new
                                {
                                    s.GoodsNo,
                                    s.GoodsName,
                                    s.SpecModel,
                                    s.GWeight,
                                    s.Grade,
                                    s.CustomerName,
                                    s.Packages,
                                    s.Tunnages,
                                    s.Piles,
                                    s.TenThousands
                                };

                    foreach (var g in goods)
                    {
                        Stock g2 = new Stock();
                        g2.Warehouse = strWarehouse;
                        g2.Location = strLocation;
                        g2.GoodsNo = g.GoodsNo;
                        g2.GoodsName = g.GoodsName;
                        g2.SpecModel = g.SpecModel;
                        g2.GWeight = g.GWeight;
                        g2.Grade = g.Grade;
                        g2.CustomerName = g.CustomerName;
                        g2.Packages = g.Packages;
                        g2.Tunnages = g.Tunnages;
                        g2.Piles = g.Piles;
                        g2.TenThousands = g.TenThousands;
                        listSource.Add(g2);
                    }

                    //货位小计
                    Stock l = new Stock();
                    l.Warehouse = strWarehouse;
                    l.Location = strLocation;
                    l.GoodsNo = InnoSoft.LS.Resources.Labels.Subtotal;
                    l.Packages = nLocationTotalPackages;
                    l.Tunnages = decLocationTotalTunnages;
                    l.Piles = decLocationTotalPiles;
                    l.TenThousands = decLocationTotalTenThousands;
                    listSource.Add(l);
                }

                //仓库合计
                Stock w = new Stock();
                w.Warehouse = strWarehouse;
                w.Location = InnoSoft.LS.Resources.Labels.Total;
                w.Packages = nWarehouseTotalPackages;
                w.Tunnages = decWarehouseTotalTunnages;
                w.Piles = decWarehouseTotalPiles;
                w.TenThousands = decWarehouseTotalTenThousands;
                listSource.Add(w);
            }

            //总计
            Stock t = new Stock();
            t.Warehouse = InnoSoft.LS.Resources.Labels.FinalTotal;
            t.Packages = nTotalPackages;
            t.Tunnages = decTotalTunnages;
            t.Piles = decTotalPiles;
            t.TenThousands = decTotalTenThousands;
            listSource.Add(t);

            //生成GridView
            BoundField colWarehouse = new BoundField();
            colWarehouse.HeaderText = InnoSoft.LS.Resources.Labels.Warehouse;
            colWarehouse.DataField = "Warehouse";

            BoundField colLocation = new BoundField();
            colLocation.HeaderText = InnoSoft.LS.Resources.Labels.Location;
            colLocation.DataField = "Location";

            BoundField colGoodsNo = new BoundField();
            colGoodsNo.HeaderText = InnoSoft.LS.Resources.Labels.GoodsNo;
            colGoodsNo.DataField = "GoodsNo";

            BoundField colGoodsName = new BoundField();
            colGoodsName.HeaderText = InnoSoft.LS.Resources.Labels.GoodsName;
            colGoodsName.DataField = "GoodsName";

            BoundField colSpecification = new BoundField();
            colSpecification.HeaderText = InnoSoft.LS.Resources.Labels.Specification;
            colSpecification.DataField = "SpecModel";

            BoundField colGrammeWeight = new BoundField();
            colGrammeWeight.HeaderText = InnoSoft.LS.Resources.Labels.GrammeWeight;
            colGrammeWeight.DataField = "GWeight";

            BoundField colGrade = new BoundField();
            colGrade.HeaderText = InnoSoft.LS.Resources.Labels.Grade;
            colGrade.DataField = "Grade";

            BoundField colCustomerName = new BoundField();
            colCustomerName.HeaderText = InnoSoft.LS.Resources.Labels.CustomerName;
            colCustomerName.DataField = "CustomerName";

            BoundField colPieces = new BoundField();
            colPieces.HeaderText = InnoSoft.LS.Resources.Labels.Pieces;
            colPieces.DataField = "Packages";

            BoundField colTunnages = new BoundField();
            colTunnages.HeaderText = InnoSoft.LS.Resources.Labels.Tunnages;
            colTunnages.DataField = "Tunnages";

            BoundField colPiles = new BoundField();
            colPiles.HeaderText = InnoSoft.LS.Resources.Labels.Piles;
            colPiles.DataField = "Piles";

            BoundField colTenThousands = new BoundField();
            colTenThousands.HeaderText = InnoSoft.LS.Resources.Labels.TenThousands;
            colTenThousands.DataField = "TenThousands";

            var grid = new GridView();
            grid.Columns.Add(colWarehouse);
            grid.Columns.Add(colLocation);
            grid.Columns.Add(colGoodsNo);
            grid.Columns.Add(colGoodsName);
            grid.Columns.Add(colSpecification);
            grid.Columns.Add(colGrammeWeight);
            grid.Columns.Add(colGrade);
            grid.Columns.Add(colCustomerName);
            grid.Columns.Add(colPieces);
            grid.Columns.Add(colTunnages);
            grid.Columns.Add(colPiles);
            grid.Columns.Add(colTenThousands);
            grid.AutoGenerateColumns = false;

            grid.DataSource = from s in listSource
                              select new
                              {
                                  Warehouse = s.Warehouse,
                                  Location = s.Location,
                                  GoodsNo = s.GoodsNo,
                                  GoodsName = s.GoodsName,
                                  SpecModel = s.SpecModel,
                                  GWeight = s.GWeight,
                                  Grade = s.Grade,
                                  CustomerName = s.CustomerName,
                                  Packages = s.Packages > 0 ? s.Packages.ToString() : string.Empty,
                                  Tunnages = s.Tunnages > 0 ? s.Tunnages.ToString("#0.######") : string.Empty,
                                  Piles = s.Piles > 0 ? s.Piles.ToString("#0.######") : string.Empty,
                                  TenThousands = s.TenThousands > 0 ? s.TenThousands.ToString("#0.######") : string.Empty
                              };
            grid.DataBind();

            //导出GridView
            Response.ClearContent();
            Response.Charset = InnoSoft.LS.Resources.Encoding.ExcelCharset;
            Response.ContentEncoding = System.Text.Encoding.GetEncoding(InnoSoft.LS.Resources.Encoding.ExcelContent);
            Response.ContentType = "application/ms-excel";
            Response.Write("<meta http-equiv=Content-Type content=text/html charset=" + InnoSoft.LS.Resources.Encoding.ExcelCharset + ">");
            Response.AddHeader("content-disposition", "attachment; filename=Stocktaking.xls");
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            grid.RenderControl(htw);
            Response.Write(sw.ToString());
            Response.End();

            return View("PrintStocktaking");
        }