VSTO를 이용하여 워드에 데이터를 바인딩하고 관련 내용을 자동으로 출력해주는 코드 입니다.
이거 만드느라 시간 많이 들였죠...ㅎㅎ
#define DEBUG
using System;
using System.IO;
using System.Text;
using System.Threading;
using System.Configuration;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.Configuration;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
using Word = Microsoft.Office.Interop.Word;
using Graph = Microsoft.Office.Interop.Graph;
using Office = Microsoft.Office.Core;
using Excel = Microsoft.Office.Tools.Excel;
public partial class CERS_Tot_MonthM : BasePage
{
#region 변수선언부
//날짜 변수
string strYear = string.Empty;
string strMonth = string.Empty;
string strDay = string.Empty;
string nowDate = string.Empty;
//변수설정
Word.Range wrdRng1;
Word.Range wrdRng2;
Word.Range wrdRng3;
Word.Range wrdRng4;
Word.Range wrdRng5;
Word.Range wrdRng6;
Word.Range wrdRng7;
Word._Application oWord;
Word._Document oDoc;
//Bookmarks 객체변수 선언
object bookmark1 = null;
object bookmark2 = null;
object bookmark3 = null;
object bookmark4 = null;
object bookmark5 = null;
object bookmark6 = null;
object bookmark7 = null;
object oMissing = System.Reflection.Missing.Value;
string mhtFileName = string.Empty;
string getFileName = string.Empty; //파일명(Doc, Mht)
string getFilePath = string.Empty; //파일경로
#endregion
#region 페이지로드 이벤트메서드
/// <summary>
/// 페이지로드 이벤트메서드
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
//페이지 타이틀 및 사이트네비게이션 설정
this.lblTitle.Text = "";
this.spnSiteNavi.InnerHtml = "";
if (!IsPostBack)
{
//월
string strMonth = "00" + DateTime.Now.Month.ToString();
//웹페이지에 날짜를 저장
this.cal_Month.Value = DateTime.Now.Year + "-" + strMonth.Substring((strMonth.Length - 2), 2);
//iframe 활성화 여부
ShowWordMht1.Visible = false;
//다운로드버튼 활성화 여부
spnDownLoad.Visible = true;
//로그인 여부 확인 후 서브메뉴생성
if (Session["sid"] != null)
{
if (Session["sid"].ToString() == CustId)
{
//연구소 권한
if (CustGrade == "0") { }
//고객사 권한
if (CustGrade == "1")
{
MakeSubMenu();
}
//지점 권한
if (CustGrade == "2")
{
ShowMessageBox("XX권한으로 접근할 수 없습니다.", "");
}
}
else
{
Response.Redirect("");
}
}
else
{
Response.Redirect("");
}
spnDownLoad.InnerHtml = "[다운로드]";
}
this.hdnCustCode.Value = CustId;
this.hdnFilePath.Value = Server.UrlEncode(WebConfigurationManager.AppSettings["XXXXXX"].ToString() + "\\Doc\\");
}
#endregion
#region 디렉토리 관리 부분(CreateDirectory, CreateDoc, ShowMht)
#region 디렉토리 생성 메서드
/// <summary>
/// 디렉토리 생성 메서드
/// </summary>
private static void CreateDirectory(string ParentDir, string ChildDir1, string ChildDir2)
{
if (!Directory.Exists(ParentDir))
{
DirectoryInfo di = Directory.CreateDirectory(ParentDir);
if (!Directory.Exists(ChildDir1))
{
DirectoryInfo cdi = Directory.CreateDirectory(ChildDir1);
}
if (!Directory.Exists(ChildDir2))
{
DirectoryInfo cdi = Directory.CreateDirectory(ChildDir2);
}
}
else
{
if (!Directory.Exists(ChildDir1))
{
DirectoryInfo cdi = Directory.CreateDirectory(ChildDir1);
}
if (!Directory.Exists(ChildDir2))
{
DirectoryInfo cdi = Directory.CreateDirectory(ChildDir2);
}
}
}
#endregion
#region Doc 파일 생성메서드
/// <summary>
/// Doc파일 생성 메서드
/// </summary>
/// <param name="oMissing"></param>
/// <param name="oWord"></param>
/// <param name="oDoc"></param>
/// <param name="bookmark2"></param>
/// <param name="FileName"></param>
/// <returns></returns>
private void CreateDoc(ref object oMissing, Word._Application oWord, Word._Document oDoc, ref object FileName)
{
try
{
//bookmark의 Range를 할당
wrdRng1 = oDoc.Bookmarks.get_Item(ref bookmark1).Range;
wrdRng2 = oDoc.Bookmarks.get_Item(ref bookmark2).Range;
wrdRng3 = oDoc.Bookmarks.get_Item(ref bookmark3).Range;
wrdRng4 = oDoc.Bookmarks.get_Item(ref bookmark4).Range;
wrdRng5 = oDoc.Bookmarks.get_Item(ref bookmark5).Range;
wrdRng6 = oDoc.Bookmarks.get_Item(ref bookmark6).Range;
wrdRng7 = oDoc.Bookmarks.get_Item(ref bookmark7).Range;
//표와 그래프 그리기
DrawContent();
//저장되는 문서 옵션
object FileFormat = Word.WdSaveFormat.wdFormatRTF;
object LockComments = false;
object AddToRecentFiles = true;
object ReadOnlyRecommended = false;
object EmbedTrueTypeFonts = false;
object SaveNativePictureFormat = true;
object SaveFormsData = true;
object SaveAsAOCELetter = false;
object Encoding = false;
object InsertLineBreaks = false;
object AllowSubstitutions = false;
object LineEnding = Word.WdLineEndingType.wdCRLF;
object AddBiDiMarks = false;
//저장하기
oDoc.SaveAs(ref FileName, ref FileFormat, ref oMissing,
ref oMissing, ref AddToRecentFiles, ref oMissing,
ref oMissing, ref oMissing,
ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing);
}
catch (Exception ex)
{
ShowMessageBox(ex.ToString(), "WIN");
}
finally
{
oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
}
}
#endregion
#region Mht 파일 생성메서드
/// <summary>
/// Mth파일 생성
/// </summary>
/// <param name="oMissing"></param>
/// <param name="oWord"></param>
/// <param name="oDoc"></param>
/// <param name="bookmark2"></param>
/// <param name="FileName"></param>
/// <returns></returns>
private void ShowMht(ref object oMissing, Word._Application oWord, Word._Document oDoc, ref object FileName)
{
try
{
//bookmark의 Range를 할당
wrdRng1 = oDoc.Bookmarks.get_Item(ref bookmark1).Range;
wrdRng2 = oDoc.Bookmarks.get_Item(ref bookmark2).Range;
wrdRng3 = oDoc.Bookmarks.get_Item(ref bookmark3).Range;
wrdRng4 = oDoc.Bookmarks.get_Item(ref bookmark4).Range;
wrdRng5 = oDoc.Bookmarks.get_Item(ref bookmark5).Range;
wrdRng6 = oDoc.Bookmarks.get_Item(ref bookmark6).Range;
wrdRng7 = oDoc.Bookmarks.get_Item(ref bookmark7).Range;
//표와 그래프 그리기
DrawContent();
//DrawGraph();
//저장되는 문서 옵션
object FileFormat = Word.WdSaveFormat.wdFormatHTML;
object LockComments = false;
object AddToRecentFiles = true;
object ReadOnlyRecommended = false;
object EmbedTrueTypeFonts = false;
object SaveNativePictureFormat = true;
object SaveFormsData = true;
object SaveAsAOCELetter = false;
object Encoding = false;
object InsertLineBreaks = false;
object AllowSubstitutions = false;
object LineEnding = Word.WdLineEndingType.wdCRLF;
object AddBiDiMarks = false;
//저장하기
oDoc.SaveAs(ref FileName, ref FileFormat, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing,
ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing);
}
catch (Exception ex)
{
ShowMessageBox(ex.ToString(), "WIN");
}
finally
{
oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
}
}
#endregion
#endregion
#region 문서 생성 메서드
/// <summary>
/// 문서생성 메서드
/// </summary>
private void CreateDoc()
{
//iframe 활성화 여부
this.ShowWordMht1.Visible = true;
//string strSdate = "";
object conffileName = null;
object fileName = null;
string confParentdir = string.Empty;
string strParentdir = string.Empty;
string strChildDir1 = string.Empty; //Doc 파일 경로
string strChildDir2 = string.Empty; //Mht 파일 경로
string sourceFileName1 = string.Empty;
string sourceFileName2 = string.Empty;
sourceFileName1 = WebConfigurationManager.AppSettings["XXXXX"].ToString();
confParentdir = WebConfigurationManager.AppSettings["XXXXX"].ToString();
fileName = sourceFileName1;
strParentdir = confParentdir;
strChildDir1 = strParentdir + "\\" + "Doc\\";
strChildDir2 = strParentdir + "\\" + "Mht\\";
//폴더 검사! 없으면 생성
CreateDirectory(strParentdir, strChildDir1, strChildDir2);
//파일명을 생성한다.
object FileName1 = strChildDir1 + this.hdnCustCode.Value + "_" + this.cal_Month.Value.Replace("-", "") + ".doc";
object FileName2 = strChildDir2 + this.hdnCustCode.Value + "_" + this.cal_Month.Value.Replace("-", "") + ".htm";
mhtFileName = this.hdnCustCode.Value + "_" + this.cal_Month.Value.Replace("-", "") + ".htm";
//전역 파일경로 변수에 경로 할당
getFilePath = strChildDir1;
//전역 파일이름 변수에 파일이름 할당
getFileName = (string)FileName1;
//기존 Doc 파일 존재 여부를 검사
try
{
oWord = (Word.Application)Server.CreateObject("Word.Application");
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref fileName, ref oMissing, ref oMissing, ref oMissing);
if (File.Exists(FileName1.ToString()))
{
File.Delete(FileName1.ToString());
//Doc파일생성
CreateDoc(ref oMissing, oWord, oDoc, ref FileName1);
File.Delete(strChildDir1 + "Normal" + ".dot");
File.Delete(strChildDir1 + "~Normal" + ".dot");
}
else
{
//Doc파일생성
CreateDoc(ref oMissing, oWord, oDoc, ref FileName1);
File.Delete(strChildDir1 + "Normal" + ".dot");
File.Delete(strChildDir1 + "~Normal" + ".dot");
}
}
catch (Exception ex)
{
}
try
{
//mht 파일 존재 여부를 검사
oWord = (Word.Application)Server.CreateObject("Word.Application");
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref fileName, ref oMissing, ref oMissing, ref oMissing);
if (File.Exists(FileName2.ToString()))
{
File.Delete(FileName2.ToString());
Directory.Delete(strChildDir2 + mhtFileName.Replace("htm", "files"));
//mht파일생성
ShowMht(ref oMissing, oWord, oDoc, ref FileName2);
File.Delete(strChildDir2 + "Normal" + ".dot");
File.Delete(strChildDir2 + "~Normal" + ".dot");
}
else
{
//mht파일생성
ShowMht(ref oMissing, oWord, oDoc, ref FileName2);
File.Delete(strChildDir2 + "Normal" + ".dot");
File.Delete(strChildDir2 + "~Normal" + ".dot");
}
}
catch (Exception ex)
{
}
}
#endregion
#region 문서 Content 생성(Draw Table, Draw Graph)
#region Draw Content Method
/// <summary>
/// Draw Content Method
/// </summary>
private void DrawContent()
{
string nowFDate = nowDate + "01";
string nowTDate = nowDate + "31";
//오늘 날짜
SqlParameter[] param = new SqlParameter[3];
param[0] = new SqlParameter("@CustId", CustId);
param[1] = new SqlParameter("@FDate", nowFDate);
param[2] = new SqlParameter("@TDate", nowTDate);
SqlHelper dac = new SqlHelper();
DataSet ds = dac.ExecuteDataset(ConnectionString, CommandType.StoredProcedure, "[dbo].[XXXXX]", param);
Word.Table tb1 = null;
Word.Table tb2 = null;
Word.Table tb3 = null;
wrdRng1.Text = this.cal_Month.Value.Substring(5,2);
wrdRng2.Text = ds.Tables[0].Rows[0][0].ToString();
wrdRng3.Text = ds.Tables[0].Rows[0][1].ToString();
wrdRng4.Text = this.cal_Month.Value.Substring(0, 4) +"년 " +this.cal_Month.Value.Substring(5, 2) + "월";
tb1 = ServiceTableList(ds, tb1);
tb2 = BugsTableList(ds, tb2);
tb3 = DivisionTableList(ds, tb3);
}
#region 테이블 1
/// <summary>
/// 테이블 1 생성 메서드
/// </summary>
/// <param name="ds"></param>
/// <param name="tb1"></param>
/// <returns></returns>
private Microsoft.Office.Interop.Word.Table ServiceTableList(DataSet ds, Word.Table tb1)
{
int tb1RowCnt = ds.Tables[1].Rows.Count;
int tb1ColCnt = ds.Tables[1].Columns.Count;
//테이블 존재여부 검사
if (oDoc.Tables.Count != 0)
{
//테이블 생성하기
//테이블 Header 셋팅
tb1 = oDoc.Tables.Add(wrdRng5, 1, tb1ColCnt, ref oMissing, ref oMissing);
tb1.Range.Tables[1].Rows[1].Cells[1].Range.Text = "Title1";
tb1.Range.Tables[1].Rows[1].Cells[2].Range.Text = "Title2";
tb1.Range.Tables[1].Rows[1].Cells[3].Range.Text = "Title3";
tb1.Range.Tables[1].Rows[1].Cells[4].Range.Text = "Title4";
tb1.Range.Tables[1].Rows[1].Cells[5].Range.Text = "Title5";
tb1.Range.Tables[1].Rows[1].Cells[6].Range.Text = "Title6";
tb1.Range.Tables[1].Rows[1].Cells[7].Range.Text = "Title7";
tb1.Range.Tables[1].Rows[1].Cells[8].Range.Text = "Title8";
//테이블 Cell 넓이, 스타일
tb1.Range.Tables[1].Rows[1].Cells[1].SetWidth(130, Word.WdRulerStyle.wdAdjustNone);
tb1.Range.Tables[1].Rows[1].Cells[2].SetWidth(100, Word.WdRulerStyle.wdAdjustNone);
tb1.Range.Tables[1].Rows[1].Cells[3].SetWidth(60, Word.WdRulerStyle.wdAdjustNone);
tb1.Range.Tables[1].Rows[1].Cells[4].SetWidth(60, Word.WdRulerStyle.wdAdjustNone);
tb1.Range.Tables[1].Rows[1].Cells[5].SetWidth(30, Word.WdRulerStyle.wdAdjustNone);
tb1.Range.Tables[1].Rows[1].Cells[6].SetWidth(60, Word.WdRulerStyle.wdAdjustNone);
tb1.Range.Tables[1].Rows[1].Cells[7].SetWidth(50, Word.WdRulerStyle.wdAdjustNone);
tb1.Range.Tables[1].Rows[1].Cells[8].SetWidth(50, Word.WdRulerStyle.wdAdjustNone);
}
//데이터로우로 부터 테이블에 데이터를 추가한다.
if (tb1.Range.Tables.Count > 0)
{
try
{
Microsoft.Office.Interop.Word.Row newRow = null;
if (tb1RowCnt == 0)
{
//newRow.Cells.Merge();
}
else
{
for (int i = 0; i < tb1RowCnt; i++)
{
newRow = tb1.Range.Tables[1].Rows.Add(ref oMissing);
newRow.Cells[1].SetWidth(130, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[2].SetWidth(100, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[3].SetWidth(60, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[4].SetWidth(60, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[5].SetWidth(30, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[6].SetWidth(60, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[7].SetWidth(50, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[8].SetWidth(50, Word.WdRulerStyle.wdAdjustNone);
//루프를 돌면서 Cell에 내용을 출력
for (int j = 0; j < tb1ColCnt; j++)
{
int k = j + 1;
newRow.Cells[k].Range.Text = ds.Tables[1].Rows[i][j].ToString();
}
}
}
newRow = null;
}
catch (Exception ex)
{
}
}
//테이블 보더 스타일
tb1.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
tb1.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
return tb1;
}
#endregion
#region 테이블 2
/// <summary>
/// 테이블2 생성메서드
/// </summary>
/// <param name="ds"></param>
/// <param name="tb2"></param>
/// <returns></returns>
private Microsoft.Office.Interop.Word.Table BugsTableList(DataSet ds, Microsoft.Office.Interop.Word.Table tb2)
{
int tb2RowCnt = ds.Tables[2].Rows.Count;
int tb2ColCnt = ds.Tables[2].Columns.Count;
//테이블 존재여부 검사
if (oDoc.Tables.Count != 0)
{
//테이블 생성하기
//테이블 Header 셋팅
tb2 = oDoc.Tables.Add(wrdRng6, 1, tb2ColCnt, ref oMissing, ref oMissing);
tb2.Range.Tables[1].Rows[1].Cells[1].Range.Text = "Title1";
tb2.Range.Tables[1].Rows[1].Cells[2].Range.Text = "Title2";
tb2.Range.Tables[1].Rows[1].Cells[3].Range.Text = "Title3";
tb2.Range.Tables[1].Rows[1].Cells[4].Range.Text = "Title4";
tb2.Range.Tables[1].Rows[1].Cells[5].Range.Text = "Title5";
tb2.Range.Tables[1].Rows[1].Cells[6].Range.Text = "Title6";
tb2.Range.Tables[1].Rows[1].Cells[7].Range.Text = "Title7";
tb2.Range.Tables[1].Rows[1].Cells[8].Range.Text = "Title8";
tb2.Range.Tables[1].Rows[1].Cells[9].Range.Text = "Title9";
tb2.Range.Tables[1].Rows[1].Cells[10].Range.Text = "Title10";
//테이블 Cell 넓이, 스타일
tb2.Range.Tables[1].Rows[1].Cells[1].SetWidth(130, Word.WdRulerStyle.wdAdjustNone);
tb2.Range.Tables[1].Rows[1].Cells[2].SetWidth(45, Word.WdRulerStyle.wdAdjustNone);
tb2.Range.Tables[1].Rows[1].Cells[3].SetWidth(45, Word.WdRulerStyle.wdAdjustNone);
tb2.Range.Tables[1].Rows[1].Cells[4].SetWidth(45, Word.WdRulerStyle.wdAdjustNone);
tb2.Range.Tables[1].Rows[1].Cells[5].SetWidth(45, Word.WdRulerStyle.wdAdjustNone);
tb2.Range.Tables[1].Rows[1].Cells[6].SetWidth(45, Word.WdRulerStyle.wdAdjustNone);
tb2.Range.Tables[1].Rows[1].Cells[7].SetWidth(45, Word.WdRulerStyle.wdAdjustNone);
tb2.Range.Tables[1].Rows[1].Cells[8].SetWidth(50, Word.WdRulerStyle.wdAdjustNone);
tb2.Range.Tables[1].Rows[1].Cells[9].SetWidth(50, Word.WdRulerStyle.wdAdjustNone);
tb2.Range.Tables[1].Rows[1].Cells[10].SetWidth(50, Word.WdRulerStyle.wdAdjustNone);
}
//데이터로우로 부터 테이블에 데이터를 추가한다.
if (tb2.Range.Tables.Count > 0)
{
try
{
Microsoft.Office.Interop.Word.Row newRow = null;
if (tb2RowCnt == 0)
{
newRow.Cells.Merge();
}
else
{
for (int i = 0; i < tb2RowCnt; i++)
{
newRow = tb2.Range.Tables[1].Rows.Add(ref oMissing);
newRow.Cells[1].SetWidth(130, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[2].SetWidth(45, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[3].SetWidth(45, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[4].SetWidth(45, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[5].SetWidth(45, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[6].SetWidth(45, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[7].SetWidth(45, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[8].SetWidth(50, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[9].SetWidth(50, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[10].SetWidth(50, Word.WdRulerStyle.wdAdjustNone);
//루프를 돌면서 Cell에 내용을 출력
for (int j = 0; j < tb2ColCnt; j++)
{
int k = j + 1;
newRow.Cells[k].Range.Text = ds.Tables[2].Rows[i][j].ToString();
}
}
}
}
catch(Exception ex)
{
}
}
//테이블 보더 스타일
tb2.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
tb2.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
return tb2;
}
#endregion
#region 테이블 3
/// <summary>
/// 테이블 3 생성 메서드
/// </summary>
/// <param name="ds"></param>
/// <param name="tb3"></param>
/// <returns></returns>
private Microsoft.Office.Interop.Word.Table DivisionTableList(DataSet ds, Word.Table tb3)
{
int tb3RowCnt = ds.Tables[3].Rows.Count;
int tb3ColCnt = ds.Tables[3].Columns.Count;
//테이블 존재여부 검사
if (oDoc.Tables.Count != 0)
{
//테이블 생성하기
//테이블 Header 셋팅
tb3 = oDoc.Tables.Add(wrdRng7, 1, tb3ColCnt, ref oMissing, ref oMissing);
tb3.Range.Tables[1].Rows[1].Cells[1].Range.Text = "Title1";
tb3.Range.Tables[1].Rows[1].Cells[2].Range.Text = "Title2";
tb3.Range.Tables[1].Rows[1].Cells[3].Range.Text = "Title3";
tb3.Range.Tables[1].Rows[1].Cells[4].Range.Text = "Title4";
tb3.Range.Tables[1].Rows[1].Cells[5].Range.Text = "Title5";
tb3.Range.Tables[1].Rows[1].Cells[6].Range.Text = "Title6";
tb3.Range.Tables[1].Rows[1].Cells[7].Range.Text = "Title7";
//테이블 Cell 넓이, 스타일
tb3.Range.Tables[1].Rows[1].Cells[1].SetWidth(130, Word.WdRulerStyle.wdAdjustNone);
tb3.Range.Tables[1].Rows[1].Cells[2].SetWidth(70, Word.WdRulerStyle.wdAdjustNone);
tb3.Range.Tables[1].Rows[1].Cells[3].SetWidth(150, Word.WdRulerStyle.wdAdjustNone);
tb3.Range.Tables[1].Rows[1].Cells[4].SetWidth(25, Word.WdRulerStyle.wdAdjustNone);
tb3.Range.Tables[1].Rows[1].Cells[5].SetWidth(100, Word.WdRulerStyle.wdAdjustNone);
tb3.Range.Tables[1].Rows[1].Cells[6].SetWidth(40, Word.WdRulerStyle.wdAdjustNone);
tb3.Range.Tables[1].Rows[1].Cells[7].SetWidth(40, Word.WdRulerStyle.wdAdjustNone);
}
//데이터로우로 부터 테이블에 데이터를 추가한다.
if (tb3.Range.Tables.Count > 0)
{
try
{
Microsoft.Office.Interop.Word.Row newRow = null;
if (tb3RowCnt == 0)
{
//newRow.Cells.Merge();
}
else
{
for (int i = 0; i < tb3RowCnt; i++)
{
newRow = tb3.Range.Tables[1].Rows.Add(ref oMissing);
newRow.Cells[1].SetWidth(130, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[2].SetWidth(70, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[3].SetWidth(150, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[4].SetWidth(25, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[5].SetWidth(100, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[6].SetWidth(40, Word.WdRulerStyle.wdAdjustNone);
newRow.Cells[7].SetWidth(40, Word.WdRulerStyle.wdAdjustNone);
//루프를 돌면서 Cell에 내용을 출력
for (int j = 0; j < tb3ColCnt; j++)
{
int k = j + 1;
newRow.Cells[k].Range.Text = ds.Tables[3].Rows[i][j].ToString();
}
}
}
}
catch (Exception ex)
{
}
}
//테이블 보더 스타일
tb3.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
tb3.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
return tb3;
}
#endregion
#endregion
#region Draw Graph Method
///// <summary>
///// Draw Graph Method
///// </summary>
//private void DrawGraph()
//{
// //오늘 날짜
// string strMonth = DateTime.Now.Month.ToString();
// string strDay = DateTime.Now.Day.ToString();
// if (int.Parse(strMonth) < 10)
// strMonth = "0" + strMonth;
// if (int.Parse(strDay) < 10)
// strDay = "0" + strDay;
// string nowDate = DateTime.Now.Year.ToString() + strMonth + strDay;
// string spName = "dbo.XXXXX";
// SqlParameter[] param = new SqlParameter[3];
// param[0] = new SqlParameter("@CompCode", CustId);
// param[1] = new SqlParameter("@FDate", nowDate);
// param[2] = new SqlParameter("@TDate", this.cal_Month.Value.Substring(0, 4) + this.cal_Month.Value.Substring(5, 2) + "31");
// SqlHelper dac = new SqlHelper();
// DataSet ds = dac.ExecuteDataset(ConnectionString, CommandType.StoredProcedure, spName, param);
// //Chart 설정
// Graph.Chart wrdChart;
// Graph.Axis axis;
// DataTable dtSheet = ds.Tables[0];
// object oClassType = "MSGraph.Chart.8";
// //차트
// wrdChart = (Graph.Chart)wrdRng7.InlineShapes.AddOLEObject(ref oClassType, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing).OLEFormat.Object;
// wrdChart.Application.PlotBy = Graph.XlRowCol.xlColumns;
// wrdChart.ChartType = Microsoft.Office.Interop.Graph.XlChartType.xlAreaStacked;
// axis = (Graph.Axis)wrdChart.Axes(1, 1);
// //Make Header of Sheet
// wrdChart.Application.DataSheet.Cells.Clear();
// for (int i = 0; i < dtSheet.Columns.Count; i++)
// {
// wrdChart.Application.DataSheet.Cells[1, i + 1] = dtSheet.Columns[i].ColumnName;
// }
// //Make DataSheet
// for (int i = 0; i < dtSheet.Rows.Count; i++)
// {
// for (int j = 0; j < dtSheet.Columns.Count; j++)
// {
// wrdChart.Application.DataSheet.Cells[i + 2, j + 1] = dtSheet.Rows[i][j].ToString();
// }
// }
// wrdChart.Width = 500;
// //지연시간이 필요할 경우
// //Thread.Sleep(3000);
// wrdChart.Application.Quit();
//}
#endregion
#endregion
#region UI 부분(MakeSubMenu, btnResult_Click, makeDate)
#region 서브메뉴생성 메서드
/// <summary>
/// 서브 매뉴 생성
/// </summary>
private void MakeSubMenu()
{
HtmlGenericControl id1 = (HtmlGenericControl)Page.FindControl("divMenu1");
HtmlGenericControl id2 = (HtmlGenericControl)Page.FindControl("divMenu2");
HtmlGenericControl id3 = (HtmlGenericControl)Page.FindControl("divMenu3");
HtmlGenericControl id4 = (HtmlGenericControl)Page.FindControl("divMenu4");
HtmlGenericControl id5 = (HtmlGenericControl)Page.FindControl("divMenu5");
AuthMenu(CustGrade, id1, id2, id3, id4, id5);
string loginYN = "";
this.t_Title_Sub.InnerHtml = "";
}
#endregion
#region 조회 버튼클릭 이벤트 메서드
/// <summary>
/// 조회 버튼클릭 이벤트 메서드
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnResult_Click(object sender, EventArgs e)
{
//기준월
nowDate = this.cal_Month.Value.Substring(0, 4) + this.cal_Month.Value.Substring(5, 2);
//Assingment Bookmark name
AssignBookmarkName();
CreateDoc();
//Download path
ShowWordMht1.FilePath = mhtFileName.ToString();
//ShowWordMht1.FilePath = mhtFileName.ToString();
UpdateProgress1.AssociatedUpdatePanelID = this.upPnlShowWord.UniqueID;
Thread.Sleep(1000);
}
#endregion
#region 북마크할당 메서드
/// <summary>
/// 북마크할당 메서드
/// </summary>
private void AssignBookmarkName()
{
//북마크 아이디 할당
bookmark1 = "bm1";
bookmark2 = "bm2";
bookmark3 = "bm3";
bookmark4 = "bm4";
bookmark5 = "bm5";
bookmark6 = "bm6";
bookmark7 = "bm7";
}
#endregion
#endregion
}