Dưới đây là một chiết xuất từ một nước xuất khẩu GridView tôi đã viết rằng chuyển đổi các điều khiển trong một GridView thành các chữ được tái tạo. Nó có thể là một số giúp đỡ:
/// <summary>
/// Parses and cleans up data from the GridView controls collection
/// to make the data more suitable for Exported
/// </summary>
/// <param name="gv">The GridView to parse</param>
private void CleanUpControls(Control gv)
{
Literal l = new Literal();
for (int i = 0; i < gv.Controls.Count; i++)
{
if (gv.Controls[i].GetType() == typeof (LinkButton))
{
l.Text = (gv.Controls[i] as LinkButton).Text;
ReplaceWithLiteral(gv, l, i);
}
else if (gv.Controls[i].GetType() == typeof (ListControl))
{
l.Text = (gv.Controls[i] as ListControl).SelectedItem.Text;
ReplaceWithLiteral(gv, l, i);
}
else if (gv.Controls[i].GetType() == typeof (CheckBox))
{
l.Text = (gv.Controls[i] as CheckBox).Checked ? "True" : "False";
ReplaceWithLiteral(gv, l, i);
}
else if (gv.Controls[i].GetType() == typeof (BooleanImage))
{
l.Text = (gv.Controls[i] as BooleanImage).Value ? "True" : "False";
ReplaceWithLiteral(gv, l, i);
}
else if (gv.Controls[i].GetType().ToString() == "System.Web.UI.WebControls.PagerTable")
ReplaceWithLiteral(gv, l, i);
else if (gv.Controls[i].GetType() == typeof (HyperLink))
{
HyperLink hl = gv.Controls[i] as HyperLink;
if (MakeHyperLinksAbsolute)
{
if (hl != null)
hl.NavigateUrl = UrlHelper.MakeAbsoluteUrl(hl.NavigateUrl);
}
switch (TreatHyperLinksAs)
{
case HyperLinkMode.Text:
l.Text = hl.Text;
ReplaceWithLiteral(gv, l, i);
break;
case HyperLinkMode.NavigateUrl:
if (hl != null) l.Text = hl.NavigateUrl;
ReplaceWithLiteral(gv, l, i);
break;
case HyperLinkMode.ToolTip:
l.Text = hl.ToolTip;
ReplaceWithLiteral(gv, l, i);
break;
case HyperLinkMode.TextAndLink:
l.Text = String.Format("{0} ({1})", hl.Text, hl.NavigateUrl);
ReplaceWithLiteral(gv, l, i);
break;
case HyperLinkMode.HyperLink:
break;
}
}
if (gv.Controls[i].HasControls())
CleanUpControls(gv.Controls[i]);
}
}
Nguồn
2009-07-21 21:05:00
Sử dụng API yêu cầu Excel phải được cài đặt trên máy chủ ... chính xác? –
Tôi tin như vậy nếu bạn đang sử dụng văn phòng interop. Nếu bạn tạo các tệp xlsx (của văn phòng 2007), về cơ bản chúng là một nhóm các tệp XML đã nén, vì vậy bạn có thể tạo chúng một cách tương đối dễ dàng (tốt nhất - tìm một thư viện). Bạn cũng có thể ghi vào Excel thông qua một chuỗi kết nối và db ole. Cách đơn giản nhất, btw (thoug mà không định dạng), là tạo một tệp CSV. – Kobi
Tôi không thể cài đặt Excel trên máy chủ. Tôi không thể sử dụng các tệp xlsx vì chúng phải tương thích với 2000 và 2003. Định dạng là bắt buộc nên tôi không thể sử dụng csv. Tôi nghĩ rằng tôi có thể thử đề xuất thứ hai của bạn ở trên và tôi sẽ xem cách thức hoạt động. Cảm ơn! –