zoukankan      html  css  js  c++  java
  • C#根據當前DataGridView查詢數據導出Excel

            private void btnsuggestinfo_Click(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("單號", typeof(string));
                dt.Columns.Add("項次", typeof(decimal));
                dt.Columns.Add("項次預約數量", typeof(decimal));
                dt.Columns.Add("廠別", typeof(string));
                dt.Columns.Add("料號", typeof(string));
                dt.Columns.Add("倉碼", typeof(string));
                dt.Columns.Add("BATCH", typeof(string));          
                dt.Columns.Add("棧板", typeof(string));
                dt.Columns.Add("入庫日期", typeof(string));// add by chao 
                dt.Columns.Add("儲位", typeof(string));
                dt.Columns.Add("數量", typeof(decimal));
    
                foreach (DataGridViewRow dgvr in dgvdnitem.Rows)
                {
                    var docitem = dgvr.DataBoundItem as Wms_doc_item;
    
                    var stockpallets = WmsEntity.Select<Wms_stock_pallet_v>(x => x.PLANT == docitem.PLANT_FROM &
                       x.SLOC == docitem.SLOC_FROM & x.MATERIAL == docitem.MATERIAL &x.BATCH==docitem.BATCH&
                       x.STOCK_FLAG == (int)Step_Type.None & x.LOCK_FLAG == 0 & x.WH == Basic.WorkingWH).OrderBy(x => x.IN_DATE);
    
                    decimal? remain_qty = (decimal?)(docitem.REQUEST_QTY - docitem.OPERATION_QTY - docitem.RESERVED_QTY);
    
                    foreach (var pallet in stockpallets)
                    {
                        DataRow dr = dt.NewRow();
                        dr.SetField<string>("單號", docitem.DOC_NO);
                        dr.SetField<decimal>("項次", docitem.DOC_ITEM.Value);
                        dr.SetField<decimal>("項次預約數量", docitem.REQUEST_QTY.Value);
                        dr.SetField<string>("廠別", pallet.PLANT);
                        dr.SetField<string>("料號", pallet.MATERIAL);
                        dr.SetField<string>("倉碼", pallet.SLOC);
                        dr.SetField<string>("BATCH", docitem.BATCH);
                        dr.SetField<string>("棧板", pallet.PALLET_ID);
                        dr.SetField<string>("入庫日期",pallet.IN_DATE.ToString());// add by chao 
                        dr.SetField<string>("儲位", pallet.BIN);
                        dr.SetField<decimal>("數量", pallet.PANEL_QTY.Value);
                        dt.Rows.Add(dr);
    
                        remain_qty -= pallet.PANEL_QTY;
                        if (remain_qty <= 0)
                        {
                            break;
                        }
                    }
                }
                DataTableToExcel(dt);
            }
            public static void DataTableToExcel(DataTable table)
            {
                SaveFileDialog dlg = new SaveFileDialog();
                dlg.Filter = "Execl files (*.xls)|*.xls";
                dlg.FilterIndex = 0;
                dlg.RestoreDirectory = true;
                dlg.Title = "保存為Excel文件";
    
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    Stream myStream;
                    myStream = dlg.OpenFile();
                    StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.Default);
                    string columnTitle = "";
                    try
                    {
                        //寫入標題列 
                        for (int i = 0; i < table.Columns.Count; i++)
                        {
                            if (columnTitle == "")
                            {
                                columnTitle = """ + table.Columns[i].ColumnName + """;
                            }
                            else
                            {
                                columnTitle += "	" + """ + table.Columns[i].ColumnName + """;
                            }
                        }
                        sw.WriteLine(columnTitle);
    
                        //寫入內容列  
                        for (int j = 0; j < table.Rows.Count; j++)
                        {
                            string columnValue = "";
                            for (int i = 0; i < table.Columns.Count; i++)
                            {
                                string cellValue = table.Rows[j][i] == DBNull.Value ? "" : table.Rows[j][i].ToString().Replace(""", "'");
                                if (columnValue == "")
                                {
                                    columnValue = """ + cellValue + """;
                                }
                                else
                                {
                                    columnValue += "	" + """ + cellValue + """;
                                }
                            }
                            sw.WriteLine(columnValue);
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                    finally
                    {
                        sw.Close();
                        myStream.Close();
                    }
                }
            }
            
  • 相关阅读:
    PS 如何制作眼泪效果
    PS 基础知识 什么是Adobe Bridge
    PS 抠图如何使用通道法处理头发
    PS 如何使用抽出滤镜抠人物的头发丝等细节
    PS 如何用PS制作GIF图像
    PS 如何制作柔和的边框
    PS 基础知识 如何绘制几何图形
    PS 基础知识 渐变编辑器如何使用
    PS 基础知识 CMYK全称是什么
    [Functional Programming] Daggy
  • 原文地址:https://www.cnblogs.com/kuangxiangnice/p/4398807.html
Copyright © 2011-2022 走看看