|
Office Automation |
작성일 : |
13/05/28 |
|
Xml 데이터를 이용하여 Word와 Excel차트 만들기 |
작성자 : |
이후용 |
1. 실행 화면
|
[Word변환 프로그램과 Excel변환 프로그램 실행 후 차트만들 지역 입력] | |
|
|
|
|
[Xml을 Word로 변환 시] |
[Xml을 Excel로 변환 시] |
2. 차트로 변환 결과
- Word로 변환 시에는 큰 문제가 없었다.
- Excel로 변환 시 Excel문서의 cell에 데이터를 표시한 후 그 데이터들을 범위로 묶어서 차트로 표현 되기 때문에 위와 같이 Xml에 있는 Data를 표시하게 되었다.
3. 할 것
- 보고서 양식을 찾아보고 그 형식에 맞춰 Word와 Excel의 보고서를 만들 것이다.
4. 코드 설명
- [DB를 Word로 변환] 하는 부분과 비슷하다.
-Excel부분..
// DB의 데이터를 꺼내어 Xml로 변환하는부분.
XmlDocument xmlDoc = new XmlDocument();
string addr = "SampleData.xml";//@C:\Users\mycom\Desktop\DBXml\XmlWord\bin\Debug\avgs.xml
xmlDoc.Load(addr);
XmlNode xmlNode = xmlDoc.SelectSingleNode("NewDataSet");
XmlNodeList xnl = xmlNode.SelectNodes("Average");
string ad = "";
double total = 0;
double dust = 0;
double ozone = 0;
foreach (XmlNode x in xnl)
{
ad = x.SelectSingleNode("Addr").InnerText;
if (ad == textBox1.Text)
{
total = double.Parse(x.SelectSingleNode("total").InnerText);
dust = double.Parse(x.SelectSingleNode("dust").InnerText);
ozone = double.Parse(x.SelectSingleNode("ozone").InnerText);
}
}
// Xml의 데이터를 Excel에넣어 차트 만드는 부분
excelApp = new MyExcel.ApplicationClass();
excelBook = excelApp.Workbooks.Add(misValue);
excelSheet = (MyExcel.Worksheet)excelBook.Worksheets.get_Item(1);
excelApp.Visible = true;
excelChartObjs = (MyExcel.ChartObjects)excelSheet.ChartObjects(misValue);
excelChartObj = (MyExcel.ChartObject)excelChartObjs.Add(10, 80, 300, 300);
excelChart = excelChartObj.Chart;
excelRange = excelSheet.get_Range("A1", "B4");
excelChart.SetSourceData(excelApp.Range["A1", "B4"], MyExcel.XlRowCol.xlColumns);
excelChart.ChartType = MyExcel.XlChartType.xl3DColumnClustered;
excelAxis = (MyExcel.Axis)excelChart.Axes(MyExcel.XlAxisType.xlValue, MyExcel.XlAxisGroup.xlPrimary);
excelAxis.HasTitle = true;
excelAxis.AxisTitle.Text = "오염도";
excelAxis.AxisTitle.HorizontalAlignment = true;
//강원 강릉시 옥천동 327-2(옥천동주민센터)
excelSheet.Cells[1, 1] = "";
excelSheet.Cells[2, 1] = "total";
excelSheet.Cells[3, 1] = "dust";
excelSheet.Cells[4, 1] = "ozone";
excelSheet.Cells[1, 2] = textBox1.Text;
excelSheet.Cells[2, 2] = total;
excelSheet.Cells[3, 2] = dust;
excelSheet.Cells[4, 2] = ozone;