- Excel 저장

- MaterialSkin 제거
This commit is contained in:
2017-02-01 11:21:21 +09:00
parent 77c0056a33
commit 4809d5ccbe
12 changed files with 65426 additions and 102 deletions

View File

@@ -7,11 +7,15 @@ using System.Text;
using System.Threading.Tasks;
//using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
using OfficeOpenXml;
using System.Drawing;
using OfficeOpenXml.Style;
namespace NewsCrawler
{
public class ExcelHandler
{
bool m_bAvailable = true;
string m_strFileName = "";
string m_strToday = DateTime.Now.ToString("yyyy-MM-dd");
@@ -20,52 +24,26 @@ namespace NewsCrawler
m_strFileName = strFileName;
}
public bool IsAvailable()
{
return m_bAvailable;
}
private void Create()
{
//try
//{
// Excel.Application App = new Excel.Application();
// if(App == null)
// {
// Util.Log(Util.LOG_TYPE.ERROR, "엑셀이 설치되지 않음");
// m_bAvailable = false;
// return;
// }
FileInfo newFile = new FileInfo(m_strFileName);
ExcelPackage package = new ExcelPackage(newFile);
ExcelWorksheet Sheet = package.Workbook.Worksheets.Add("first");
Sheet.Cells[1, 1].Value = "날짜";
Sheet.Cells[1, 2].Value = "기사 시간";
Sheet.Cells[1, 3].Value = "받은 시간";
Sheet.Cells[1, 4].Value = "요청 시간";
Sheet.Cells[1, 5].Value = "출처";
Sheet.Cells[1, 6].Value = "제목";
Sheet.Cells[1, 7].Value = "종목명";
Sheet.Cells[1, 8].Value = "시가";
Sheet.Cells[1, 9].Value = "저가";
Sheet.Cells[1, 10].Value = "대비";
Sheet.Cells[1, 11].Value = "고가";
Sheet.Cells[1, 12].Value = "대비";
Sheet.Cells[1, 13].Value = "링크";
// Excel._Workbook Workbook = App.Workbooks.Add(Missing.Value);
// Excel._Worksheet Worksheet = Workbook.ActiveSheet;
// Worksheet.Cells[1, 1] = "날짜";
// Worksheet.Cells[1, 2] = "기사 시간";
// Worksheet.Cells[1, 3] = "받은 시간";
// Worksheet.Cells[1, 4] = "출처";
// Worksheet.Cells[1, 5] = "제목";
// Worksheet.Cells[1, 6] = "요청 시간";
// Worksheet.Cells[1, 7] = "시가";
// Worksheet.Cells[1, 8] = "저가";
// Worksheet.Cells[1, 9] = "대비";
// Worksheet.Cells[1, 10] = "고가";
// Worksheet.Cells[1, 11] = "대비";
// Worksheet.Cells[1, 12] = "링크";
// Workbook.SaveAs(m_strFileName, Excel.XlFileFormat.xlOpenXMLWorkbook, Missing.Value,
// Missing.Value, false, false, Excel.XlSaveAsAccessMode.xlNoChange,
// Excel.XlSaveConflictResolution.xlUserResolution, true,
// Missing.Value, Missing.Value, Missing.Value);
// Workbook.Close();
//}
//catch(Exception ex)
//{
// Console.WriteLine(ex.Message + Environment.NewLine + ex.StackTrace);
//}
string strMessage = "날짜, 기사 시간, 받은 시간, 요청 시간, 출처, 제목, 종목명, 시가, 저가, 대비, 고가, 대비, 링크";
File.AppendAllText(m_strFileName, strMessage+Environment.NewLine, new UTF8Encoding(true));
package.Save();
}
public bool AddRow(string strNewsTime, string strResTime, float fReqTime, string strRef, string strTitle, string strCodeName,
@@ -73,53 +51,43 @@ namespace NewsCrawler
{
lock(this)
{
if(m_bAvailable == false)
return false;
if(File.Exists(m_strFileName) == false)
Create();
string strMessage = string.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7:n0}, {8:n0}, {9:n2}, {10:n0}, {11:n2}, {12}",
m_strToday, strNewsTime, strResTime, fReqTime, strRef, strTitle.Replace(",", "\\,"), strCodeName,
iPriceS, iPriceLow, fPriceLowP, iPriceHigh, fPriceHighP, strLink);
File.AppendAllText(m_strFileName, strMessage+Environment.NewLine, new UTF8Encoding(true));
FileInfo newFile = new FileInfo(m_strFileName);
ExcelPackage package = new ExcelPackage(newFile);
ExcelWorksheet Sheet = package.Workbook.Worksheets["first"];
int iRow = Sheet.Dimension.Rows+1;
Sheet.Cells[iRow, 1].Value = m_strToday;
Sheet.Cells[iRow, 2].Value = strNewsTime;
Sheet.Cells[iRow, 3].Value = strResTime;
Sheet.Cells[iRow, 4].Value = fReqTime;
Sheet.Cells[iRow, 5].Value = strRef;
Sheet.Cells[iRow, 6].Value = strTitle;
Sheet.Cells[iRow, 7].Value = strCodeName;
Sheet.Cells[iRow, 8].Value = iPriceS;
Sheet.Cells[iRow, 8].Style.Numberformat.Format = "###,###,##0";
Sheet.Cells[iRow, 9].Value = iPriceLow;
Sheet.Cells[iRow, 9].Style.Numberformat.Format = "###,###,##0";
Sheet.Cells[iRow, 10].Value = fPriceLowP;
Sheet.Cells[iRow, 10].Style.Numberformat.Format = "###,###,##0.00";
if(fPriceLowP > 0)
Sheet.Cells[iRow, 10].Style.Font.Color.SetColor(Color.Red);
else if(fPriceLowP < 0)
Sheet.Cells[iRow, 10].Style.Font.Color.SetColor(Color.Blue);
Sheet.Cells[iRow, 11].Value = iPriceHigh;
Sheet.Cells[iRow, 11].Style.Numberformat.Format = "###,###,##0";
Sheet.Cells[iRow, 12].Value = fPriceHighP;
Sheet.Cells[iRow, 12].Style.Numberformat.Format = "###,###,##0.00";
if(fPriceHighP > 0)
Sheet.Cells[iRow, 12].Style.Font.Color.SetColor(Color.Red);
else if(fPriceHighP < 0)
Sheet.Cells[iRow, 12].Style.Font.Color.SetColor(Color.Blue);
Sheet.Cells[iRow, 13].Value = strLink;
//try
//{
// Excel.Application App = new Excel.Application();
// if(App == null)
// {
// Util.Log(Util.LOG_TYPE.ERROR, "엑셀이 설치되지 않음");
// m_bAvailable = false;
// return false;
// }
// App.DisplayAlerts = false;
// Excel._Workbook Workbook = App.Workbooks.Open(m_strFileName);
// Excel._Worksheet Worksheet = Workbook.ActiveSheet;
// int iRow = Worksheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing).Row+1;
// Worksheet.Cells[iRow, 1] = m_strToday;
// Worksheet.Cells[iRow, 2] = strNewsTime;
// Worksheet.Cells[iRow, 3] = strResTime;
// Worksheet.Cells[iRow, 4] = strRef;
// Worksheet.Cells[iRow, 5] = strTitle;
// Worksheet.Cells[iRow, 6] = fReqTime;
// Worksheet.Cells[iRow, 7] = iPriceS;
// Worksheet.Cells[iRow, 8] = iPriceLow;
// Worksheet.Cells[iRow, 9] = fPriceLowP;
// Worksheet.Cells[iRow, 10] = iPriceHigh;
// Worksheet.Cells[iRow, 11] = fPriceHighP;
// Worksheet.Cells[iRow, 12] = strLink;
// Workbook.Save();
// Workbook.Close();
//}
//catch(Exception ex)
//{
// Console.WriteLine(ex.Message + Environment.NewLine + ex.StackTrace);
// return false;
//}
Sheet.Cells.AutoFitColumns(0);
package.Save();
}
return true;