2011-11-03 2 views
0

asp 페이지에서 listview를 가지고 있으며 코드를 Excel (C#)에서 Excel로 내보내려면 내보내기해야합니다. 그러나 모든 열을 내보낼 필요는 없습니다.더 적은 수의 열로 목록보기 복사

더 적은 수의 열로 ListView를 새로운 ListView 개체로 복사 할 수 있습니까? 더 적은 수의 열로 목록보기를 Excel로 내보내는 다른 방법이 있습니까?

난 뒤에 코드에서 능가 할 수있는 코드를 수출하고 방법이 있습니다 : 어떻게 컨텐츠를 수출,

+0

을 사전에

protected void ExportToExcel(object sender, EventArgs e) { string attachment = "attachment; filename=MyData.xls"; Response.ClearContent(); Response.AddHeader("content-disposition", attachment); Response.ContentType = "application/ms-excel"; Response.ContentEncoding = Encoding.Unicode; Response.BinaryWrite(Encoding.Unicode.GetPreamble()); StringWriter stw = new StringWriter(); HtmlTextWriter htextw = new HtmlTextWriter(stw); // How can I render myListView with fewer columns? myListView.RenderControl(htextw); Response.Write(stw.ToString()); Response.End(); } 

감사합니다? – Yahia

+0

안녕하세요, 질문에 코드를 추가했습니다. – doorman

답변

1
class ListViewToCSV 
{ 
    public static void ListViewToCSV(ListView listView, string filePath, bool includeHidden) 
    { 
     //make header srting 
     StringBuilder result = new StringBuilder(); 
     WriteCSVRow(result, listView.Columns.Count, i => includeHidden || listView.Columns[i].Width > 0, i => listView.Columns[i].Text); 

     //export data rows 
     foreach (var listItem in listView.Items) 
      WriteCSVRow(result, listView.Columns.Count, i => includeHidden || listView.Columns[i].Width > 0, i => listItem.SubItems[i].Text); 

     File.WriteAllText(filePath, result.ToString()); 
    } 

    private void WriteCSVRow(StringBuilder result, int itemsCount, Func<int, bool> isColumnNeeded, Func<int, string> columnValue) 
    { 
     bool isFirstTime = true; 
     for (int i = 0; i < itemsCount; i++) 
     { 
      if (!isColumnNeeded(i)) 
       continue; 

      if (!isFirstTime) 
       result.Append(","); 
      isFirstTime = false; 

      result.Append(String.Format("\"{0}\"", columnValue(i))); 
     } 
     result.AppendLine(); 
    } 
} 
+0

빠른 답변 감사드립니다. ListView 객체가 '.Columns'를 인식하지 못하는 것 같습니다. 이 오류가 발생합니다. 'System.Web.UI.WebControls.ListView에 Columns에 대한 정의가없고 확장 메서드가 없습니다. System.Web 유형의 첫 번째 인수를 허용하는 열입니다. UI.WebControls.ListView를 찾을 수 있습니다 (사용 지시문이나 어셈블리 참조가 누락 되었습니까?) ' 이유는 무엇입니까? – doorman

관련 문제