using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Word = Microsoft.Office.Interop.Word;
using System.Threading;
using office = Microsoft.Office.Core;
using System.Reflection;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
private Word.Application G_wa;//定义Word应用程序字段
private object G_missing = System.Reflection.Missing.Value;//定义G_missing字段并添加引用
protected void Page_Load(object sender, EventArgs e)
{
txtOpenPath.Text = Server.MapPath("~/File/明日公司.doc");//打开Word文档位置
txtSavePath.Text = Server.MapPath("~/access.mdb");//保存Access文件位置
}
protected void btnNew_Click(object sender, EventArgs e)
{
try
{
InsertData();//执行插入数据方法
}
catch
{
Response.Write("<script>alert('插入信息失败,请确认Word中添入的信息是否正确!');</script>");//提示已经创建Word
}
}
/// <summary>
/// 向Access数据库插入数据方法
/// </summary>
private void InsertData()
{
G_wa = new Microsoft.Office.Interop.Word.Application();//创建应用程序对象
object P_Path = txtOpenPath.Text;
//打开Word文档
Word.Document P_Document = G_wa.Documents.Open(
ref P_Path, ref G_missing, ref G_missing, ref G_missing
, ref G_missing, ref G_missing, ref G_missing, ref G_missing
, ref G_missing, ref G_missing, ref G_missing, ref G_missing
, ref G_missing, ref G_missing, ref G_missing, ref G_missing);
try
{
Word.Range P_Range = P_Document.Range(ref G_missing, ref G_missing);//得到文档范围
Word.Table P_Table = P_Range.Tables[1];//得到文档内的表格对象
List<InstanceClass> P_List_InstanceClass = new List<InstanceClass>();//建立集合对象
for (int i = 2; i < 7; i++)
{
//判断表格内是否已经添加信息
if (P_Table.Cell(i, 1).Range.Text != "\r\a" &&
P_Table.Cell(i, 2).Range.Text != "\r\a" &&
P_Table.Cell(i, 3).Range.Text != "\r\a" &&
P_Table.Cell(i, 4).Range.Text != "\r\a")
{
//向数据集合中添加数据
P_List_InstanceClass.Add(
new InstanceClass()
{
Name = P_Table.Cell(i, 1).Range.Text.Replace("\r\a", ""),
Chinese = float.Parse(P_Table.Cell(i, 2).Range.Text.Replace("\r\a", "")),
Math = float.Parse(P_Table.Cell(i, 3).Range.Text.Replace("\r\a", "")),
English = float.Parse(P_Table.Cell(i, 4).Range.Text.Replace("\r\a", ""))
});
}
}
new DataTier().InsertMessage(P_List_InstanceClass);//向Access数据库中插入数据
object P_Save = false;//创建object对象
((Word._Application)G_wa.Application).Quit(ref P_Save, ref G_missing, ref G_missing);//退出应用程序
Response.Write("<script>alert('向Access中插入数据成功!');</script>");//提示已经创建Word
}
catch (Exception ex)
{
object P_Save = false;//创建object对象
((Word._Application)G_wa.Application).Quit(ref P_Save, ref G_missing, ref G_missing);//退出应用程序
throw new Exception(ex.Message);//将异常抛向上一层
}
}
}
public class DataTier
{
//定义连接字符串
private string OLEConnection = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};User Id=Admin; Password=",
HttpContext.Current.Server.MapPath("~") + @"\access.mdb");
/// <summary>
/// 从数据库中得到数据集合的方法
/// </summary>
/// <returns>返回数据集合</returns>
public List<InstanceClass> GetMessage()
{
//创建数据适配器对象
OleDbDataAdapter P_OleDbDataAdapter = new OleDbDataAdapter("select * from tb_grade", OLEConnection);
DataTable dt = new DataTable();//创建数据表对象
P_OleDbDataAdapter.Fill(dt);//填充数据表
List<InstanceClass> P_List_InstanceClass = new List<InstanceClass>();//创建数据集合对象
foreach (DataRow dr in dt.Rows)//遍历数据表
{
P_List_InstanceClass.Add(//向数据集合中添加数据
new InstanceClass()
{
id = (int)dr[0],
Name = dr[1].ToString(),
Chinese = (float)dr[2],
Math = (float)dr[3],
English = (float)dr[4]
});
}
return P_List_InstanceClass;//返回数据集合对象
}
/// <summary>
/// 向数据库中插入数据的方法
/// </summary>
/// <param name="ls">数据集合</param>
public void InsertMessage(List<InstanceClass> ls)
{
using (OleDbConnection P_Connection = new OleDbConnection(OLEConnection))
{
P_Connection.Open();
foreach (InstanceClass ic in ls)
{
OleDbCommand P_Command = new OleDbCommand();
P_Command.Connection = P_Connection;
P_Command.CommandText = string.Format(
"insert into [tb_grade](Name,Chinese,Math,English) values(@Name,@Chinese,@Math,@English)");
P_Command.Parameters.Add("@Name", OleDbType.VarChar, 50).Value = ic.Name;
P_Command.Parameters.Add("@Chinese", OleDbType.Single).Value = ic.Chinese;
P_Command.Parameters.Add("@Math", OleDbType.Single).Value = ic.Math;
P_Command.Parameters.Add("@English", OleDbType.Single).Value = ic.English;
P_Command.ExecuteNonQuery();
}
}
}
}