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 == & 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 <= )
{
break;
}
}
}
DataTableToExcel(dt);
}
public static void DataTableToExcel(DataTable table)
{
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "Execl files (*.xls)|*.xls";
dlg.FilterIndex = ;
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 = ; i < table.Columns.Count; i++)
{
if (columnTitle == "")
{
columnTitle = "\"" + table.Columns[i].ColumnName + "\"";
}
else
{
columnTitle += "\t" + "\"" + table.Columns[i].ColumnName + "\"";
}
}
sw.WriteLine(columnTitle); //寫入內容列
for (int j = ; j < table.Rows.Count; j++)
{
string columnValue = "";
for (int i = ; 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 += "\t" + "\"" + cellValue + "\"";
}
}
sw.WriteLine(columnValue);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
}
C#根據當前DataGridView查詢數據導出Excel的更多相关文章
- 一次 C# 查詢數據庫 算法優化的案例
最近有次在修改某段程式時,發現一段程式算法看起來簡單. 但背後因為多次查詢數據庫,導致效能問題. 這段程式主要是利用 EPPLUS 讀取 Excel 資料,檢查資料是否已存在數據庫中,若有就將已存在的 ...
- SQL查詢數據字典
SELECT d.name AS 表名 , f.value AS 表说明, 字段序号 = a.colorder , 字段名 = a.name , 标识 THEN '√' ELSE '' END , 主 ...
- Grafana展示報表數據的配置(二)
一.Grafana以圖表的形式展示KPI報表的結果數據1.按照日期顯示數據達標量與未達標量2.顯示當前報表的最大值.最小值.平均值.總量3.報表結果數據的鏈接分享與頁面嵌入,用戶無需登錄直接訪問報表統 ...
- laravel 一表關聯二表,二表關聯三表,通過一表controller拿三表數據
model 一表關聯二表 public function ordercode() { return $this->hasOne(\App\Models\OrderCode::class,'id' ...
- 數據庫ORACLE轉MYSQL存儲過程遇到的坑~(總結)
ORACLE數據庫轉MySQL數據庫遇到的坑 總結 最近在做Oracle轉mysql的工程,遇到的坑是真的多,尤其是存儲過程,以前都沒接觸過類似的知識,最近也差不多轉完了就總結一下.希望能幫到一些人( ...
- 在Android中afinal框架下實現sqlite數據庫版本升級的辦法
public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int new Version) 這個方法在實現時需要重寫. pub ...
- C#在Excel的簡單操作--適用:與DB數據的簡單交互
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...
- ionic 向後台請求json 數據 在頁面上的顯示問題
我向服務器請求數據,獲取到的數據竟然不能顯示在頁面上 我那個氣啊..... <ul> <!-- <li ng-repeat="phone in phones&quo ...
- 使用DataSet與DataAdapter對數據庫進行操作
1.定義連接字符串 var source = "server=(local); integrated security=SSPI; database=test"; var conn ...
随机推荐
- UVA11324 The Largest Clique —— 强连通分量 + 缩点 + DP
题目链接:https://vjudge.net/problem/UVA-11324 题解: 题意:给出一张有向图,求一个结点数最大的结点集,使得任意两个结点u.v,要么u能到达v, 要么v能到达u(u ...
- luogu 3804 【模板】后缀自动机
学习一波后缀自动机 求字符串$S$的所有出现次数不为1的子串的出现次数乘上该子串长度的最大值 #include<iostream> #include<cstdio> #incl ...
- RDA 常用API
FAC: app_factory_data_new.h app_guiobj_cul_fm_factorySetting_new.c _APP_Update_Layer() //刷新节点 密码文件: ...
- softmax regression in c++
#include <iostream>#include <vector>#include <cmath>#include <algorithm>#inc ...
- STM32F4 LTDC学习
很久没有写东西了,也很久没看文档了吼吼,觉得有点无聊,找来F4看看,主要看F429.督促自己多看多记录. 首先配置同步时序先看参考手册 下面看一个实际例子,一块439的开发板 设置: LTDC_Ini ...
- arcgis for silverlight 相关学习资料整理
Arcgis Resources:http://resources.arcgis.com/en/home/ esri中文官方论坛:http://www.gisall.com/portal.php 爱吃 ...
- 使用root用户登录到AWS EC2服务器,上传文件到/var/www目录
关键词 1.aws ec2中上传文件到/var/www目录(使用filezilla) 2.使用root用户登录aws ec2实例 上一篇随笔中记录了在aws ec2实例中部署apache服务器的过程, ...
- centos6.5 系统-搭建lamp(php7)环境--(yum在线安装)
1.查看当前服务器的版本 #方法1 cat /etc/redhat-release #方法2 rpm -q centos-release 2.安装apache #一键安装apache yum inst ...
- PostgreSQL 9.6.2版本在centOS下的安装和配置
1.如果有用yum安装过旧版,卸载掉: yum remove postgresql* 2.更新一下yum: sudo yum update 3.去 官网 找到 适合你系统 的资源的下载地址,然后使用w ...
- Python unittest 基本框架解析(2)
下面例子,是一般测试框架的基本结构 框架知识点包括:实例化被测试模块类.装载测试用例.测试套件打包.保存测试输出结果.生成测试报告等 测试情况包括 :跳过某个case.执行成功.执行失败 #待测试 ...