To click on the link with text as Download file in csv format you can use either of the following Locator Strategies :
Update A
I am still not sure why you were stuck with the click()
on the link with text as Download file in csv format. I was able to click on the link just by inducing a waiter for the element to be clickable as follows :
Sample Code :
package demo;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Q50035477_click_link {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.nseindia.com/products/content/equities/indices/historical_index_data.htm");
driver.findElement(By.cssSelector("input.textboxdata.hasDatepicker#fromDate")).sendKeys("23-04-2018");
driver.findElement(By.cssSelector("input.textboxdata.hasDatepicker#toDate")).sendKeys("25-04-2018");
driver.findElement(By.cssSelector("input.getdata-button")).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("Download file in csv format"))).click();
}
}
Browser Client Snapshot :

Note : click()
method is robust, powerful and proven. You should try to utilize the click()
method in a proper way and in proper condition to avoid deviations. Of-coarse Actions class and JavascriptExecutor interface have their own usability and are used extensively.
Update B
Code block for larger data :
package demo;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Q50035477_click_link {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.nseindia.com/products/content/equities/indices/historical_index_data.htm");
driver.findElement(By.cssSelector("input.textboxdata.hasDatepicker#fromDate")).sendKeys("01-01-2017");
driver.findElement(By.cssSelector("input.textboxdata.hasDatepicker#toDate")).sendKeys("31-12-2017");
driver.findElement(By.cssSelector("input.getdata-button")).click();
WebElement element = driver.findElement(By.linkText("Download file in csv format"));
((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);", element);
element.click();
}
}
Note : Browser snapshot remains the same.