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 ...
随机推荐
- I.MX6 查看baudrate确定是否被其他程序占用
/*********************************************************************** * I.MX6 查看baudrate确定是否被其他程序 ...
- MkDocs -- Project documentation with Markdown
/************************************************************************ * MkDocs -- Project docume ...
- CF上的3道小题(1)
CF上的3道小题 终于调完了啊.... T1:CF702E Analysis of Pathes in Functional Graph 题意:你获得了一个n个点有向图,每个点只有一条出边.第i个点的 ...
- pybot执行多条用例时,某一个用例执行失败,停止所有用例的执行
问题: pybot执行多条用例时,某一个用例执行失败,停止所有用例的执行 解决办法: pybot -exitonfailure E:\robot\呼送项目\测试用例\基本流程\主流程.txt 参考文章 ...
- charCode 表示空格 实现中文对齐
字符以及HTML实体 描述以及说明 这是我们使用最多的空格,也就是按下space键产生的空格.在HTML中,如果你用空格键产生此空格,空格是不会累加的(只算1个).要使用html实体表示才可累 ...
- springMVC实现基本文件夹压缩下载功能
将文件夹压缩后下载: @Slf4j public class Test { private static final String BASE_PATH = "/root/doc/" ...
- pascal倒序输出
program Project6; {$APPTYPE CONSOLE} uses SysUtils; var a,b,c,d:integer; begin { TODO -oUser -cConso ...
- bzoj 1103: [POI2007]大都市meg【dfs序+树状数组】
很明显的暗示,就是在树的dfs序上维护树状数组,加减的时候差分即可 #include<iostream> #include<cstdio> #include<cstrin ...
- 【OpenJ_Bailian - 4152 】最佳加法表达式(动态规划)
最佳加法表达式 Descriptions: 给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值.例如,在1234中摆放1个加号,最好的摆 ...
- 设置Google搜索在新的标签页打开
Google搜索的结果,默认情况下点击进入是在本标签页打开的,这样就很麻烦, 可以在搜索结果的页面中进行设置,让它在新的标签页显示 搜索结果设置->搜索设置->新的标签页打开