最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

asp.net中如何批量導(dǎo)出access某表內(nèi)容到word文檔

 更新時(shí)間:2015年10月15日 14:38:33   投稿:mrr  
最近有項(xiàng)目需求是這樣的,需要將某表中的每一條記錄中的某些內(nèi)容導(dǎo)出在一個(gè)word文檔中。下面小編就把我的解決辦法分享給大家,供大家參考

下面通過(guò)圖文并茂的方式給大家介紹asp.net中批量導(dǎo)出access某表內(nèi)容到word文檔的方法,具體詳情如下:

一、需求:

 需要將表中每一條記錄中的某些內(nèi)容導(dǎo)出在一個(gè)word文檔中,并將這些文檔保存在指定文件夾目錄下

二、界面,簡(jiǎn)單設(shè)計(jì)如下:

三、添加office相關(guān)引用

添加后可在解決方案資源管理器中看到:

四、添加form1中的引用

using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using Microsoft.Office.Core;
using Word=Microsoft.Office.Interop.Word;
using System.Reflection;

五、窗體Form1中代碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using Microsoft.Office.Core;
using Word=Microsoft.Office.Interop.Word;
using System.Reflection;
using System.Threading;//線(xiàn)程需用,進(jìn)程中
namespace word
{
 delegate void ShowProgressDelegate(int totalStep, int currentStep); //定義委托,異步調(diào)用
 public partial class Form1 : Form
 {
  public Form1()
  {
   InitializeComponent();
  }
  public string filepath = "D:\\zjy\\其他\\NCTDCBJYQ04.mdb"; //數(shù)據(jù)庫(kù)所在位置設(shè)置
  public string path; //輸出路徑
  private void Form1_Load(object sender, EventArgs e)
  {
   string sqlstr = "select OBJECTID,CBFBM,CBFMC from CBF";
   //string sqlstr = "select * from CBF";
   DataSet ds = AccessDAO.getDataSetFromAccessTable(sqlstr, filepath);
   this.dataGridView1.DataSource = ds.Tables[0].DefaultView; 
   dataGridView1.AllowUserToAddRows = false;
  }
  private void textBox1_MouseClick(object sender, MouseEventArgs e)//輸出路徑設(shè)置
  {
   FolderBrowserDialog dilog = new FolderBrowserDialog();
   dilog.Description = "請(qǐng)選擇文件夾";
   if (dilog.ShowDialog() == DialogResult.OK || dilog.ShowDialog() == DialogResult.Yes)
   {
    path = dilog.SelectedPath;
    this.textBox1.Text = path;
   }
  }
  object pathword;      //聲明文件路徑變量
  private void button2_Click(object sender, EventArgs e) //批量輸出
  {
   ParameterizedThreadStart start = new ParameterizedThreadStart(SetProgress);
   Thread progressThread = new Thread(start);
   progressThread.IsBackground = true;//標(biāo)記為后臺(tái)進(jìn)程,在窗口退出時(shí),正常退出
   progressThread.Start();
  }
   /// <summary>
  /// 刷新進(jìn)度條
  /// </summary>
  /// <param name="totalStep"></param>
  /// <param name="currentStep"></param>
  void ShowProgress(int totalStep, int currentStep)
  {
   this.progressBar1.Maximum = totalStep;
   this.progressBar1.Value = currentStep;
   if (this.progressBar1.Value * 100 / progressBar1.Maximum != 100)
   {
    this.label2.Text = "當(dāng)前輸出進(jìn)度為:" + this.progressBar1.Value * 100 / progressBar1.Maximum + "%" + " 請(qǐng)耐心等待:)";
   }
   else if (this.progressBar1.Value * 100 / progressBar1.Maximum == 100)
   {
    this.label2.Text = "輸出結(jié)束!";
   }
  }
  /// <summary>
  /// 設(shè)置當(dāng)前進(jìn)度
  /// </summary>
  /// <param name="state"></param>
  void SetProgress(object state)
  {
   if (this.textBox1.Text == "")
   {
    MessageBox.Show("請(qǐng)選擇文件輸出路徑", "提示");
   }
   else
   {
    for (int i = 0; i < this.dataGridView1.Rows.Count; i++) //遍歷獲取table中需要的值,并分別創(chuàng)建word文檔
    {
     #region 打開(kāi)進(jìn)度條
     Thread.Sleep(1);
     object[] objs = new object[] { this.dataGridView1.RowCount, i+1 };
     //異步調(diào)用
     this.Invoke(new ShowProgressDelegate(ShowProgress), objs);
     #endregion
     #region 獲取word中需要添加的內(nèi)容
     string dm = this.dataGridView1.Rows[i].Cells[1].Value.ToString();//承包方編碼
     string mc = this.dataGridView1.Rows[i].Cells[2].Value.ToString();//承包方名稱(chēng)
     #endregion
     #region 創(chuàng)建word文檔,并將內(nèi)容寫(xiě)入word,并保存起來(lái)
     //初始化變量
     object Nothing = Missing.Value;      //COM調(diào)用時(shí)用于占位
     object format = Word.WdSaveFormat.wdFormatDocument; //Word文檔的保存格式
     Word.ApplicationClass wordApp = new Word.ApplicationClass();    //聲明一個(gè)wordAPP對(duì)象
     Word.Document worddoc = wordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);//新建一個(gè)word對(duì)象
     //向文檔中寫(xiě)入內(nèi)容
     string wordstr = "承包方代碼:" + dm + "\n" + "承包方名稱(chēng):" + mc;
     worddoc.Paragraphs.Last.Range.Text = wordstr;
     //保存文檔   
     pathword = path + "\\" + dm; //設(shè)置文件保存路徑
     worddoc.SaveAs(ref pathword, ref format, ref Nothing, ref Nothing,
      ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing,
      ref Nothing, ref Nothing, ref Nothing, ref Nothing,
      ref Nothing, ref Nothing, ref Nothing);
     //關(guān)閉文檔
     worddoc.Close(ref Nothing, ref Nothing, ref Nothing); //關(guān)閉worddoc文檔對(duì)象
     wordApp.Quit(ref Nothing, ref Nothing, ref Nothing); //關(guān)閉wordApp組對(duì)象
     #endregion
    }
    MessageBox.Show("文檔創(chuàng)建成功!","提示");
   }   
  }    
 }
}

六、讀取數(shù)據(jù)庫(kù)中表需要的數(shù)據(jù)庫(kù)類(lèi)AccessDAO.cs代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Text.RegularExpressions; //正則表達(dá)式引用所需
namespace word
{
 //access的數(shù)據(jù)訪(fǎng)問(wèn)接口
 class AccessDAO
 {
  public static class Property
  {
   public static string accessFilePath = "d:\\nCTDCBJYQ04DataSet.mdb";
   //若放入主程序,則可如下設(shè)置
   //one mainFrm = (one)this.Owner;
   //string prjName = mainFrm.laPrj.Text;
   //string prjPath = mainFrm.laFile_Path.Text;
   // public static string accessFilePath = prjPath + "\\矢量數(shù)據(jù)\\" + prjName + ".mdb";
  }
  //從access數(shù)據(jù)庫(kù)獲取數(shù)據(jù)
  //dataFilePath指定access文件的路徑
  //sql指定數(shù)據(jù)庫(kù)的查詢(xún)語(yǔ)句
  //DataSet為查詢(xún)返回的數(shù)據(jù)集
  public static DataSet getDataSetFromAccessTable(string sql, string dataFilePath)
  {
   // 連接數(shù)據(jù)庫(kù) 
   OleDbConnection connct = new OleDbConnection();
   string oleDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dataFilePath;
   connct.ConnectionString = oleDB;
   //創(chuàng)建命令
   OleDbCommand command = new OleDbCommand(sql, connct);
   //打開(kāi)數(shù)據(jù)庫(kù)
   connct.Open();
   //執(zhí)行命令
   DataSet dataSet = new DataSet();
   OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command);
   dataAdapter.Fill(dataSet);
   // 關(guān)閉連接 
   connct.Close();
   return dataSet;
  }
  //更新或者插入數(shù)據(jù)到access數(shù)據(jù)庫(kù)
  //dataFilePath指定access文件的路徑
  //sql指定數(shù)據(jù)庫(kù)的更新或者插入語(yǔ)句
  //返回值int表示此次更新影響的行數(shù)
  public static int updateAccessTable(string sql, string dataFilePath)
  {
   // 連接數(shù)據(jù)庫(kù) 
   OleDbConnection connct = new OleDbConnection();
   string oleDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dataFilePath;
   connct.ConnectionString = oleDB;
   //打開(kāi)數(shù)據(jù)庫(kù)
   connct.Open();
   //執(zhí)行命令
   OleDbCommand myCommand = new OleDbCommand(sql, connct);
   int res = myCommand.ExecuteNonQuery();
   // 關(guān)閉連接 
   connct.Close();
   return res;
  }
  //更新或者插入數(shù)據(jù)到access數(shù)據(jù)庫(kù)
  //dataFilePath指定access文件的路徑
  //command指定操作(更新或者插入)數(shù)據(jù)庫(kù)的命令
  //返回值int表示此次更新影響的行數(shù)
  public static int updateAccessTable(OleDbCommand command, string dataFilePath)
  {
   // 連接數(shù)據(jù)庫(kù) 
   OleDbConnection connct = new OleDbConnection();
   string oleDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dataFilePath;
   connct.ConnectionString = oleDB;
   //打開(kāi)數(shù)據(jù)庫(kù)
   connct.Open();
   //執(zhí)行命令
   //OleDbCommand myCommand = new OleDbCommand(sql, connct);
   command.Connection = connct;
   int res = command.ExecuteNonQuery();
   // 關(guān)閉連接 
   connct.Close();
   return res;
  }
  public bool ckDigital_Num(string digitalItem, int digitalNum)    //正則檢查是否為數(shù)字,且位數(shù)一定
  {
   bool isDigital_Num = false;
   Regex reGen = new Regex(@"^\d{" + digitalNum.ToString("F0") + "}$");     //正則表達(dá)式,n位數(shù)字
   if (reGen.IsMatch(digitalItem))
    isDigital_Num = true;
   return isDigital_Num;
  }
 }
}

ok了,至此就可完成批量導(dǎo)出成word文檔了

相關(guān)文章

最新評(píng)論

南城县| 扶风县| 达日县| 合水县| 南乐县| 越西县| 沅江市| 杭锦旗| 庆城县| 秦皇岛市| 荥经县| 沾益县| 故城县| 平遥县| 武胜县| 定结县| 富蕴县| 积石山| 会宁县| 青岛市| 晋江市| 淮南市| 云龙县| 孟村| 从化市| 天气| 双流县| 昌平区| 潮州市| 锡林浩特市| 汝南县| 台东县| 无锡市| 怀化市| 白水县| 西乌珠穆沁旗| 浮山县| 平顶山市| 剑阁县| 南雄市| 子长县|