하나의 워크 시트에 대해 gridview에서 Excel로 데이터를 성공적으로 내보 냈지만 여러 워크 시트를 추가하려고합니다. 내가 봤 거든 몇 가지 옵션을 시도했지만 아무것도 작동하지 않지만 가까이지고있다. 나는 그것이 단지 몇 줄의 코드의 문제라고 생각한다.MVC에서 Excel로 데이터 내보내기
public ActionResult Download()
{
if (Session["BP"] != null)
{
return new DownloadFileActionResult((GridView)Session["BP"], "BestPrices.xls");
}
else
{
return new JavaScriptResult();
}
}
은 내가 시일을 추정하고있는 gridview를 사용하여 세션 변수를 채울 : 이제 다음 코드가 내가 그 도움이 될 생각을있는 GridViews의 배열을 구축
GridView gv = new GridView();
gv.DataSource = gridTable;
gv.DataBind();
// Session["BP"] = myGridViews;
Session["BP"] = g;
을하지만 난 지금을 내보낼 수 없습니다.
GridView[] g = new GridView[retailerTables.Count];
int n = 0;
foreach (string key in keys)
{
myGridViews[n] = retailerTables[key];
g[n] = new GridView();
g[n].DataSource = retailerTables[key];
g[n].DataBind();
n++;
}
기본 개념은 Excel 파일의 각 워크 시트가 하나의 gridview에 해당한다는 것입니다.
다양한 제 3 자 옵션을 보았지만 인터페이스 안정성을 디버깅하는 결과가 얼마나 신뢰할 수 있는지 알 수 없습니다. MVC에서 핵심 클래스와 옵션을 사용하는 것을 선호합니다.
응용 프로그램이 웹 사이트에서 실행되고 사용자가 링크를 클릭하여 파일을 다운로드합니다.
소매상 테이블은 다음과 같습니다
Dictionary<string, DataTable> retailerTables= new Dictionary<string, DataTable>();
은 따라서 각 워크 시트는 유통 업체에 대한 판매 데이터를해야합니다 및 사용자가 마지막으로 단지 다른 소매 업체를 클릭하고 판매 데이터를 볼 수 있습니다.
누구나 내가 설명한대로 여러 테이블을 내보내는 문제를 해결하는 방법을 알고 있습니까?
웹 서버에서는 Excel COM 구성 요소를 사용하지 않으려합니다. 그들은 거기에서 사용하도록 설계되지 않았기 때문에 많은 오류가 발생할 수 있습니다. 나는 많은 프로젝트에서 [EPPlus] (http://epplus.codeplex.com)를 사용해 왔으며 아주 잘 작동한다. 함께 작업하기가 매우 쉽고 여러 워크 시트를 손쉽게 처리 할 수 있습니다. – krillgar
@krillgar가 말한 바. 나는 일반적으로 내 Excel 요구 사항에 대해 [NPOI] (https://npoi.codeplex.com/)를 사용하며 불만을 제기하지 않았습니다. – Travis
NPOI로 해결했습니다. 나는 나중에 코드를 게시 할 것이다. –