Files
VICrawler/ExcelHandler.cs
2017-02-08 16:30:22 +09:00

74 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
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 VICrawlerNS
{
public class ExcelHandler
{
string m_strFileName = "";
string m_strToday = DateTime.Now.ToString("yyyy-MM-dd");
public ExcelHandler(string strFileName, string[] astrColumns)
{
m_strFileName = strFileName;
if(File.Exists(m_strFileName) == false)
Create(astrColumns);
}
private void Create(string[] astrColumns)
{
lock(this)
{
FileInfo newFile = new FileInfo(m_strFileName);
ExcelPackage package = new ExcelPackage(newFile);
ExcelWorksheet Sheet = package.Workbook.Worksheets.Add("sheet");
for(int i = 0; i<astrColumns.Length; i++)
Sheet.Cells[1, i+1].Value = astrColumns[i];
package.Save();
}
}
public bool AddRow(object[] row)
{
lock(this)
{
FileInfo newFile = new FileInfo(m_strFileName);
ExcelPackage package = new ExcelPackage(newFile);
ExcelWorksheet Sheet = package.Workbook.Worksheets["sheet"];
int iRowNo = Sheet.Dimension.Rows+1;
for(int i=0; i<row.Length; i++)
{
Sheet.Cells[iRowNo, i+1].Value = row[i];
if(row[i].GetType() == typeof(int))
{
Sheet.Cells[iRowNo, i+1].Style.Numberformat.Format = "###,###,##0";
}
else if(row[i].GetType() == typeof(float))
{
Sheet.Cells[iRowNo, i+1].Style.Numberformat.Format = "###,###,##0.00";
float fValue = (float)row[i];
Sheet.Cells[iRowNo, i+1].Style.Font.Color.SetColor(fValue>0 ? Color.Red : fValue<0 ? Color.Blue : Color.Black);
}
}
Sheet.Cells.AutoFitColumns(0);
package.Save();
}
return true;
}
}
}