private CompanyFinancialStatistics ConvertReaderToCompanyFinancialStatisticsObject(MySqlDataReader rdr) { List <string> sqlParams = new List <string>(); foreach (string s in _KEY_COLS) { sqlParams.Add(s); } foreach (string s in _NON_KEY_COLS) { sqlParams.Add(s); } int i = 0; CompanyFinancialStatistics comp = new CompanyFinancialStatistics(); comp.Symbol = MySqlHelper.ConvertReaderToString(rdr, sqlParams[i++]); comp.Date = MySqlHelper.ConvertReaderToDateTime(rdr, sqlParams[i++]); comp.BookValuePerShare = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.StockPrice = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.ReturnOnEquity = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.ReturnOnAssets = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.DebtToEquity = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.YearHigh = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.YearLow = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.Eps = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.RevenuePerShare = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.AverageVolume = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.MarketCap = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.TotalDebt = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.CurrentSharesShort = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.LastMonthSharesShort = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.FiftyMovingAverage = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.TwoHundredMovingAverage = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.DividendYieldPercent = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.OperatingMargin = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.ProfitMargin = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.TrailingPE = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.ForwardPE = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.PegRatio = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.EnterpriseValue = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.PriceToSales = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.PriceToBook = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.EvToRevenue = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.EvToEbitda = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.QuarterlyRevenueGrowth = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.QuarterlyEarningsGrowth = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.Ebitda = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.NetIncomeToCommonShares = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.TotalCash = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.CurrentRatio = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.OperatingCashFlow = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); comp.LeveredCashFlow = MySqlHelper.ConvertReaderToDecimal(rdr, sqlParams[i++]); return(comp); }
public void InsertCompanyFinancialStatistics(CompanyFinancialStatistics inc) { MySqlParameter[] parms = GetCompanyFinancialStatisticsParameters(); SetIncomeStatementParameters(inc, parms); using (MySqlConnection conn = new MySqlConnection(MySqlHelper.SV_CONN_STRING)) { conn.Open(); MySqlHelper.ExecuteNonQuery(conn, InsertSQLStatement(), parms); } }
public void UpdateCompanyFinancialStatistics(CompanyFinancialStatistics cfs) { if (CompanyFinancialStatisticsExists(cfs.Symbol, cfs.Date)) { _dao.UpdateCompanyFinancialStatistics(cfs); } else { _dao.InsertCompanyFinancialStatistics(cfs); } }
private CompanyFinancialStatistics GetFinancialStatistics(CompanyValuationStatistics cvs) { CompanyFinancialStatistics cfs = new CompanyFinancialStatistics(cvs.Symbol, new DateTime()); FSFMngr().PopulateCompanyFinancialStatisticsFromStatements(cfs, cvs.AvgGrowthProjections.Find(cvs.Year), BalanceSheetBL.Instance.GetBalanceSheet(cvs.Symbol, cvs.Year), CompanyAnnualDataBL.Instance.GetCompanyAnnual(cvs.Symbol, cvs.Year)); //FSFMngr().PopulateCompanyFinancialStatisticsFromYahooApi(cfs); return(cfs); }
public void PopulateCompanyFinancialStatisticsFromStatements(CompanyFinancialStatistics finStats, IncomeStatement inc, BalanceSheet bs, CompanyAnnualData cad) { finStats.BookValuePerShare = bs.ShareholdersEquity / cad.SharesOutstanding; finStats.DebtToEquity = bs.Debt / bs.ShareholdersEquity; finStats.ProfitMargin = inc.NetIncome / inc.Revenue; finStats.ReturnOnAssets = inc.NetIncome / bs.TotalAssets; if (bs.ShareholdersEquity == 0) { finStats.ReturnOnEquity = 0; } else { finStats.ReturnOnEquity = inc.NetIncome / bs.ShareholdersEquity; } finStats.RevenuePerShare = inc.Revenue / cad.SharesOutstanding; finStats.TotalDebt = bs.Debt; }
private static void SetIncomeStatementParameters(CompanyFinancialStatistics comp, MySqlParameter[] parms) { int i = 0; parms[i++].Value = comp.Symbol; parms[i++].Value = comp.Date; parms[i++].Value = comp.BookValuePerShare; parms[i++].Value = comp.StockPrice; parms[i++].Value = comp.ReturnOnEquity; parms[i++].Value = comp.ReturnOnAssets; parms[i++].Value = comp.DebtToEquity; parms[i++].Value = comp.YearHigh; parms[i++].Value = comp.YearLow; parms[i++].Value = comp.Eps; parms[i++].Value = comp.RevenuePerShare; parms[i++].Value = comp.AverageVolume; parms[i++].Value = comp.MarketCap; parms[i++].Value = comp.TotalDebt; parms[i++].Value = comp.CurrentSharesShort; parms[i++].Value = comp.LastMonthSharesShort; parms[i++].Value = comp.FiftyMovingAverage; parms[i++].Value = comp.TwoHundredMovingAverage; parms[i++].Value = comp.DividendYieldPercent; parms[i++].Value = comp.OperatingMargin; parms[i++].Value = comp.ProfitMargin; parms[i++].Value = comp.TrailingPE; parms[i++].Value = comp.ForwardPE; parms[i++].Value = comp.PegRatio; parms[i++].Value = comp.EnterpriseValue; parms[i++].Value = comp.PriceToSales; parms[i++].Value = comp.PriceToBook; parms[i++].Value = comp.EvToRevenue; parms[i++].Value = comp.EvToEbitda; parms[i++].Value = comp.QuarterlyRevenueGrowth; parms[i++].Value = comp.QuarterlyEarningsGrowth; parms[i++].Value = comp.Ebitda; parms[i++].Value = comp.NetIncomeToCommonShares; parms[i++].Value = comp.TotalCash; parms[i++].Value = comp.CurrentRatio; parms[i++].Value = comp.OperatingCashFlow; parms[i++].Value = comp.LeveredCashFlow; }
public void EnterAllCompaniesFinancialStatistics() { CompanyCollection companies = CompanyBL.Instance.GetCompanies(); foreach (Company comp in companies) { try { CompanyFinancialStatistics cfs = new CompanyFinancialStatistics(comp.Symbol, DateTime.Today); YahooHtmlParser.Instance.GetCompaniesFinancialData(cfs); CompanyFinancialStatisticsBL cfsBL = new CompanyFinancialStatisticsBL(); cfsBL.UpdateCompanyFinancialStatistics(cfs); Console.WriteLine("LOADED " + comp.Symbol); } catch (Exception e) { Console.WriteLine("DID NOT LOAD " + comp.Symbol); } } }
public CompanyFinancialStatistics GetCompanyFinancialStatistics(string tickerSymbol, DateTime date) { CompanyFinancialStatistics bs = null; MySqlParameter[] parms = new MySqlParameter[] { new MySqlParameter("@SYMBOL", MySqlDbType.VarChar), new MySqlParameter("@DATE", MySqlDbType.DateTime) }; parms[0].Value = tickerSymbol; parms[1].Value = date; //Execute Query using (MySqlDataReader rdr = MySqlHelper.ExecuteReader(MySqlHelper.SV_CONN_STRING, SelectEntryFromSQLStatement(), parms)) { if (rdr.Read()) { bs = ConvertReaderToCompanyFinancialStatisticsObject(rdr); } } return(bs); }
public void GetCompaniesFinancialData(CompanyFinancialStatistics fin) { string url = "http://finance.yahoo.com/q/ks?s=" + fin.Symbol + "+Key+Statistics"; HtmlDocument doc = new HtmlWeb().Load(url); foreach (HtmlNode div in doc.DocumentNode.SelectNodes("//span[@class='time_rtq_ticker']")) { fin.StockPrice = GetDecimalFromConString(div.ChildNodes[0].InnerHtml); } foreach (HtmlNode div in doc.DocumentNode.SelectNodes("//td[@class='yfnc_tablehead1' and @width='74%']")) { if (div.InnerHtml.Contains("Market Cap (intraday)")) { fin.MarketCap = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Enterprise Value") && !div.InnerHtml.Contains("Revenue") && !div.InnerHtml.Contains("EBITDA")) { fin.EnterpriseValue = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Trailing P/E")) { fin.TrailingPE = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Forward P/E")) { fin.ForwardPE = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("PEG Ratio")) { fin.PegRatio = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Price/Sales")) { fin.PriceToSales = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Price/Book")) { fin.PriceToBook = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Enterprise Value/Revenue")) { fin.EvToRevenue = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Enterprise Value/EBITDA")) { fin.EvToEbitda = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Profit Margin")) { fin.ProfitMargin = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Operating Margin")) { fin.OperatingMargin = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Return on Assets")) { fin.ReturnOnAssets = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Return on Equity")) { fin.ReturnOnEquity = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Revenue Per Share")) { fin.RevenuePerShare = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Qtrly Revenue Growth (yoy)")) { fin.QuarterlyRevenueGrowth = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("EBITDA (ttm)")) { fin.Ebitda = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Net Income Avl to Common")) { fin.NetIncomeToCommonShares = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Diluted EPS")) { fin.Eps = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Qtrly Earnings Growth (yoy)")) { fin.QuarterlyEarningsGrowth = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Total Cash (mrq)")) { fin.TotalCash = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Total Debt (mrq)")) { fin.TotalDebt = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Total Debt/Equity")) { fin.DebtToEquity = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Current Ratio")) { fin.CurrentRatio = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Book Value Per Share")) { fin.BookValuePerShare = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Operating Cash Flow")) { fin.OperatingCashFlow = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Levered Free Cash Flow")) { fin.LeveredCashFlow = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Avg Vol (3 month)")) { fin.AverageVolume = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Shares Short (as of")) { fin.CurrentSharesShort = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Shares Short (prior month)")) { fin.LastMonthSharesShort = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("Forward Annual Dividend Yield")) { fin.DividendYieldPercent = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("50-Day Moving Average")) { fin.FiftyMovingAverage = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("200-Day Moving Average")) { fin.TwoHundredMovingAverage = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("52-Week High")) { fin.YearHigh = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } else if (div.InnerHtml.Contains("52-Week Low")) { fin.YearLow = GetDecimalFromConString(div.NextSibling.ChildNodes[0].InnerHtml); } } }
public void CreateAbbreviatedExcelDocument() { string filename = @"C:\Users\Daniel\Documents\Visual Studio 2012\ExcelFiles\abbreviated_" + DateTime.Now.Year + "_" + DateTime.Now.Month + "_" + DateTime.Now.Day + "_" + DateTime.Now.Hour + DateTime.Now.Minute + ".xlsx"; FileInfo newFile = new FileInfo(filename); using (ExcelPackage xlPackage = new ExcelPackage(newFile)) { string[] columns = AbrreviatedColumns(); ExcelWorksheet compInfoWS = xlPackage.Workbook.Worksheets.Add("Company Info"); int i = 1; compInfoWS.Row(1).Style.Font.Bold = true; foreach (string col in columns) { compInfoWS.Cells[1, i].Value = col; i++; } CompanyCollection comps = CompanyBL.Instance.GetCompanies(); CompanyValuationStatisticsCollection valuations = new CompanyValuationStatisticsCollection(); CompanyFinancialStatisticsCollection statistics = new CompanyFinancialStatisticsCollection(); CompanyValuationStatistics cvs; int count = 2; int x = 0; foreach (Company comp in comps) { x++; //if (comp.Symbol.Equals("azo")) //{ try { cvs = GetCompanyValuationStatistics(comp); valuations.Add(cvs); CompanyFinancialStatistics stats = CompanyFinancialStatisticsBL.Instance.GetCompanyFinancialStatistics(comp.Symbol, DateTime.Today.AddDays(-1)); statistics.Add(stats); BalanceSheet bal = BalanceSheetBL.Instance.GetBalanceSheet(comp.Symbol, 2012); IncomeStatement inc = IncomeStatementBL.Instance.GetIncomeStatement(comp.Symbol, 2012); CompanyAnnualData data = CompanyAnnualDataBL.Instance.GetCompanyAnnual(comp.Symbol, 2012); int f = 1; compInfoWS.Cells[count, f++].Value = comp.Symbol; compInfoWS.Cells[count, f++].Value = comp.CompanyName; compInfoWS.Cells[count, f++].Value = comp.Industry; compInfoWS.Cells[count, f++].Value = comp.Sector; compInfoWS.Cells[count, f++].Value = stats.StockPrice; compInfoWS.Cells[count, f++].Value = stats.BookValuePerShare; compInfoWS.Cells[count, f++].Value = stats.ReturnOnEquity; compInfoWS.Cells[count, f++].Value = stats.ReturnOnAssets; compInfoWS.Cells[count, f++].Value = stats.DebtToEquity; compInfoWS.Cells[count, f++].Value = stats.YearHigh; compInfoWS.Cells[count, f++].Value = stats.YearLow; compInfoWS.Cells[count, f++].Value = stats.Eps; compInfoWS.Cells[count, f++].Value = stats.RevenuePerShare; compInfoWS.Cells[count, f++].Value = stats.AverageVolume; compInfoWS.Cells[count, f++].Value = stats.MarketCap; compInfoWS.Cells[count, f++].Value = stats.TotalDebt; compInfoWS.Cells[count, f++].Value = stats.CurrentSharesShort; compInfoWS.Cells[count, f++].Value = stats.LastMonthSharesShort; compInfoWS.Cells[count, f++].Value = (stats.CurrentSharesShort / data.SharesOutstanding); compInfoWS.Cells[count, f++].Value = (stats.LastMonthSharesShort / data.SharesOutstanding); compInfoWS.Cells[count, f++].Value = stats.FiftyMovingAverage; compInfoWS.Cells[count, f++].Value = stats.TwoHundredMovingAverage; compInfoWS.Cells[count, f++].Value = stats.DividendYieldPercent; compInfoWS.Cells[count, f++].Value = stats.OperatingMargin; compInfoWS.Cells[count, f++].Value = stats.ProfitMargin; compInfoWS.Cells[count, f++].Value = stats.TrailingPE; compInfoWS.Cells[count, f++].Value = stats.ForwardPE; compInfoWS.Cells[count, f++].Value = stats.PegRatio; compInfoWS.Cells[count, f++].Value = stats.EnterpriseValue; compInfoWS.Cells[count, f++].Value = stats.PriceToSales; compInfoWS.Cells[count, f++].Value = stats.PriceToBook; compInfoWS.Cells[count, f++].Value = stats.EvToRevenue; compInfoWS.Cells[count, f++].Value = stats.EvToEbitda; compInfoWS.Cells[count, f++].Value = stats.QuarterlyRevenueGrowth; compInfoWS.Cells[count, f++].Value = stats.QuarterlyEarningsGrowth; compInfoWS.Cells[count, f++].Value = stats.NetIncomeToCommonShares; compInfoWS.Cells[count, f++].Value = stats.TotalCash; compInfoWS.Cells[count, f++].Value = stats.CurrentRatio; compInfoWS.Cells[count, f++].Value = stats.OperatingCashFlow; compInfoWS.Cells[count, f++].Value = stats.LeveredCashFlow; compInfoWS.Cells[count, f++].Value = stats.Roic(); compInfoWS.Cells[count, f++].Value = inc.Ebit; compInfoWS.Cells[count, f++].Value = cvs.NopDcfsAvgGrowth.GetAverage("StockValue"); compInfoWS.Cells[count, f++].Value = cvs.NopDcfsAvgGrowth.GetStandardDeviation("StockValue"); compInfoWS.Cells[count, f++].Value = string.Format("={0}/{1}", compInfoWS.Cells[count, 43].Address, compInfoWS.Cells[count, 44].Address); compInfoWS.Cells[count, f++].Value = cvs.NopDcfsDecayGrowth.GetAverage("StockValue"); compInfoWS.Cells[count, f++].Value = cvs.NopDcfsDecayGrowth.GetStandardDeviation("StockValue"); compInfoWS.Cells[count, f++].Value = string.Format("={0}/{1}", compInfoWS.Cells[count, 46].Address, compInfoWS.Cells[count, 47].Address); compInfoWS.Cells[count, f++].Value = cvs.NopDcfsNoGrowth.GetAverage("StockValue"); compInfoWS.Cells[count, f++].Value = cvs.NopDcfsNoGrowth.GetStandardDeviation("StockValue"); compInfoWS.Cells[count, f++].Value = string.Format("={0}/{1}", compInfoWS.Cells[count, 49].Address, compInfoWS.Cells[count, 50].Address); compInfoWS.Cells[count, f++].Value = cvs.NetIncomeDcfsAvgGrowth.GetAverage("StockValue"); compInfoWS.Cells[count, f++].Value = cvs.NetIncomeDcfsAvgGrowth.GetStandardDeviation("StockValue"); compInfoWS.Cells[count, f++].Value = string.Format("={0}/{1}", compInfoWS.Cells[count, 52].Address, compInfoWS.Cells[count, 53].Address); compInfoWS.Cells[count, f++].Value = cvs.NetIncomeDcfsDecayGrowth.GetAverage("StockValue"); compInfoWS.Cells[count, f++].Value = cvs.NetIncomeDcfsDecayGrowth.GetStandardDeviation("StockValue"); compInfoWS.Cells[count, f++].Value = string.Format("={0}/{1}", compInfoWS.Cells[count, 55].Address, compInfoWS.Cells[count, 56].Address); compInfoWS.Cells[count, f++].Value = cvs.NetIncomeDcfsNoGrowth.GetAverage("StockValue"); compInfoWS.Cells[count, f++].Value = cvs.NetIncomeDcfsNoGrowth.GetStandardDeviation("StockValue"); compInfoWS.Cells[count, f++].Value = string.Format("={0}/{1}", compInfoWS.Cells[count, 58].Address, compInfoWS.Cells[count, 59].Address); compInfoWS.Cells[count, f++].Formula = string.Format("= {0} - {1}", compInfoWS.Cells[count, 6].Address, compInfoWS.Cells[count, 5].Address); compInfoWS.Cells[count, f++].Formula = string.Format("= {0} - {1}", compInfoWS.Cells[count, 43].Address, compInfoWS.Cells[count, 5].Address); compInfoWS.Cells[count, f++].Formula = string.Format("= {0} - {1}", compInfoWS.Cells[count, 46].Address, compInfoWS.Cells[count, 5].Address); compInfoWS.Cells[count, f++].Formula = string.Format("= {0} - {1}", compInfoWS.Cells[count, 49].Address, compInfoWS.Cells[count, 5].Address); compInfoWS.Cells[count, f++].Formula = string.Format("= {0} - {1}", compInfoWS.Cells[count, 52].Address, compInfoWS.Cells[count, 5].Address); compInfoWS.Cells[count, f++].Formula = string.Format("= {0} - {1}", compInfoWS.Cells[count, 55].Address, compInfoWS.Cells[count, 5].Address); compInfoWS.Cells[count, f++].Formula = string.Format("= {0} - {1}", compInfoWS.Cells[count, 58].Address, compInfoWS.Cells[count, 5].Address); count++; Console.WriteLine("loaded: {0}", comp.Symbol); } catch (Exception ex) { Console.WriteLine(string.Format("ERROR: DID NOT LOAD: {0} {1}", comp.Symbol, ex.Message)); } //} } xlPackage.Save(); } }