나는 csv 행을 반환하는 메서드가 있습니다. 그러나 나는 이것을 datatable로 변환하고 싶다. 의미는 어디서든 ","어디서나 새로운 열 셀에 데이터를 넣고 싶습니다. CSV를 Datatable으로 변환
private static string ConvertGridViewRowToCsvRow(GridViewRow row)
{
StringBuilder csvRow = new StringBuilder();
bool firstCell = true;
foreach (DataControlFieldCell cell in row.Cells)
{
string text = string.Empty;
if (!String.IsNullOrEmpty(cell.Text))
{
text = cell.Text;
}
else if (cell.Controls.Count > 0)
{
foreach (var control in cell.Controls)
{
if (control is ITextControl)
{
var textControl = control as ITextControl;
text += HttpUtility.HtmlDecode(textControl.Text).Replace("\r", string.Empty).Replace("\n", string.Empty).Trim();
}
else if (control is TextImage)
{
var textImage = control as TextImage;
text += HttpUtility.HtmlDecode(textImage.Text).Replace("\r", string.Empty).Replace("\n", string.Empty).Trim();
}
}
}
if (!firstCell)
{
csvRow.Append(",");
}
csvRow.Append(MakeTextCsvFriendly(text));
firstCell = false;
}
return csvRow.ToString();
}
이
은을 저장하는 데 이러한 파일을 사용하는 것이csvFile.Append(",");
또는 가능 하나를 대체 할
ConvertGridViewRowToCsvRow
public static void Export(string fileName, GridView gv, HashSet<string> selectedRows)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader(
"content-disposition", string.Format("attachment; filename={0}", fileName));
HttpContext.Current.Response.ContentType = "text/csv";
//SetHiddenColumnsVisibility(gv); enable if you want only selected columns to visible on export (not current business requirement)
var csvFile = new StringBuilder();
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter htw = new HtmlTextWriter(sw))
{
if (gv.HeaderRow != null)
{
GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);
bool firstCell = true;
foreach (DataControlFieldHeaderCell cell in gv.HeaderRow.Cells)
{
if (!firstCell)
{
csvFile.Append(",");
}
string text = cell.ContainingField.HeaderText;
csvFile.Append(MakeTextCsvFriendly(text));
firstCell = false;
}
csvFile.Append("\r\n");
}
if (selectedRows.Count > 0)
{
foreach (GridViewRow row in gv.Rows)
{
if (row.RowType == DataControlRowType.DataRow && selectedRows.Contains(gv.DataKeys[row.RowIndex].Value.ToString()))
{
GridViewExportUtil.PrepareControlForExport(row);
csvFile.AppendLine(ConvertGridViewRowToCsvRow(row));
}
}
}
else
{
foreach (GridViewRow row in gv.Rows)
{
GridViewExportUtil.PrepareControlForExport(row);
csvFile.AppendLine(ConvertGridViewRowToCsvRow(row));
}
}
// render the htmlwriter into the response
HttpContext.Current.Response.Write(csvFile.ToString());
HttpContext.Current.Response.End();
}
}
}
나는 방법을 생각
를 호출하는 버튼 클릭시 호출되는 방법입니다 DataTable의 데이터.
그러나이 방법을 구성하는 데 지침이 필요합니다.
는 [FileHelpers] (http://www.filehelpers.net/)가 잘 작동 만약 당신이 대답으로 표시하는 것을 잊지 마세요, –