免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
調用Excel模版后根據(jù)自定義數(shù)據(jù)庫字段同cell定位生成多Sheet的Excel文件...

最近給公司做個項目,要求每天全自動的根據(jù)一份Excel模版(帶圖片)把數(shù)據(jù)庫中的數(shù)據(jù)自動添加進入相關cell中,并要求不同產(chǎn)品生成不同文件,同一產(chǎn)品不同型號生成不同Sheets...還要自動把當天生成的這些Excel文件自動郵件給指定客人...
恩恩,這就是自動化...
用了兩個星期做完...下面說下關鍵的處理,給同樣要做的朋友一些幫助:
1.要自動化,就需要用ini文件
加入:
   [DllImport("kernel32")]
   private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
   [DllImport("kernel32")]
   private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);

另外要加個Timer1,程序啟動的時候讀ini文件,確定是否需要哪些自動化,對Timer1的延時需要也在ini文件中設定:
private void Form1_Load(object sender, System.EventArgs e)
   {

    ini_read("Setup",7);
    ini_read("Parameter",55);
    ini_read("Email",9);
    if (this.checkBox1.Checked ==true) //判斷是否"Setup"中設定了自動執(zhí)行
    {
     timer1.Interval =int.Parse(this.textBox1.text.ToString ());
     timer1.Start();
    }     
   }
ini_read(string strName,int intSum)是我自己的讀ini方法

2.根據(jù)條件生成DataSet....這個簡單不寫了
3.邦定到一個dataGrid1上
4.建立Excel文件
得到產(chǎn)品名同型號名,用DataView來實現(xiàn):
DataView dv=new DataView ();
dv=((DataSet)dataGrid1.DataSource).Tables [0].DefaultView ;

調用生成一個Excel文件的方法:
public void GetTemplate(string strFileName,DataView dv,int intdvParameterS,int intdvParameterE,int intSheetTotal)
GetTemplate(strProductID,dv,(intEnd-intSheetTotal),intEnd,intSheetTotal+1);
解釋下,strFileName就是一個產(chǎn)品的名,也是要做為文件名稱的,intdvParameterS是dv中這個產(chǎn)品開始的index,intdvParameterE是dv中這個產(chǎn)品的最后一個index,intSheetTotal就是dv中這個產(chǎn)品的總數(shù)

在GetTemplate中要添加模版,拷貝模版給多個Sheet,保存文件:
調用放在\Template文件夾下的template.xls文件,
Microsoft.Office.Interop.Excel.Application objEa;
objEa.Workbooks.Add(((System.Environment.CurrentDirectory.Replace("\\","\\\\"))+"\\\\"+"Template\\template.xls"));

生成intSheetTotal個Sheet....

拷貝模版到Sheet
Microsoft.Office.Interop .Excel .Worksheet objEs;
objEs.Copy (objEa.Workbooks[1].Worksheets[1] ,Missing.Value );

用數(shù)組添加值吧,主要用for作循環(huán)
Microsoft.Office .Interop .Excel .Range[] objEr=new Microsoft.Office .Interop .Excel .Range[30];
objEr[i]=objEs.get_Range(strPara[i],Missing.Value);
objEr[i].Value2 =dv[intdvParameterS+k-1].Row[strField[i]].ToString();
strField[i]是ini中設定的數(shù)據(jù)庫中字段
strPara[i]是ini中設定的Excel中位置,比如strField[0]="ProductID",strPara[0]="C22"
...
string   strName=strFileName;
string   strFolder=this.textBox2.Text+"\\"+strName+".xls"; //textBox2是文件夾路徑
    this.listBox1.Items .Add(strFolder);//這是把這個Excel文件作為郵件附件添加進附件List中處理
objEa.Workbooks[1].SaveCopyAs(strFolder);

好了,循環(huán)添加完了后,保存就行了了,這樣一個產(chǎn)品名稱的Excel文件都完成了,里面有多個不同型號的Sheet,如果查詢出來的是多個產(chǎn)品,那么就循環(huán)調用GetTemplate()就可以了

5.其他都簡單
發(fā)郵件用
using System.Web.Mail ;
附件讀剛才那個listBox1就可以了
文件夾操作用
    string strPath;
    strPath=this.textBox2 .Text ;
    System.IO.Directory.Delete(strPath,true);
    Directory.CreateDirectory (strPath);
嘿嘿,全刪除  

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
EXCEL將文件保存為模版
如何將多個excel文件作為不同sheet都導入一個excel文件中?
將多個Excel文件合并到一個Excel的多個sheet,這個方法簡單快捷
782560705/easyexcel
文件上傳:讀取文件流的形式
遠程使用報表軟件及報表輸出解決方法匯總
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服