DataTable을 XLS 파일로 변환하려고합니다. 코드DataTable을 변환 할 수 없습니까?
Snippet1
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition","attachment;filename=New.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
for (int i = 1; i < gvGridView.HeaderRow.Cells.Count; i++)
{
gvGridView.HeaderRow.Cells[i].Text = Table.Columns[i - 1].ColumnName;
}
for (int i = 0; i < gvGridView.Rows.Count; i++)
{
//Apply text style to each Row
gvGridView.Rows[i].Attributes.Add("class", "textmode");
}
gvGridView.RenderControl(hw);
//style to format numbers to string
string style = @"<style> .textmode { mso-number-format:\@; } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
아래이 코드는 잘 보인다. xls 파일을 생성했습니다. 그리고 그것은 정확하게 열릴 수 있습니다. 그러나이 과정을 리버스 엔지니어링하려고했습니다. 즉,이 특정 xls 파일을 다시 datatable로 변환합니다. 아래 코드 :
Snippet2
int idx = filen.IndexOf(".");
string tf = filen.Remove(idx, 4);
OleDbConnection MyConnection = null;
DataSet DtSet = null;
OleDbDataAdapter MyCommand = null;
//Connection for MS Excel 2003 .xls format
MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties=Excel 8.0;");
MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [table$]", MyConnection);
DtSet = new System.Data.DataSet();
MyCommand.Fill(DtSet);
dt = DtSet.Tables[0];
MyConnection.Close();
if (dt.Rows.Count > 0)
{
theGridView.DataSource = dt;
theGridView.DataBind();
}
if(System.IO.File.Exists(path))
{
System.IO.File.Delete(path);
}
오류 발생이 코드. 그것은 말한다 :
외부 파일 형식이
를 지원하지 난 당신이 잘못된 OLEDB 공급자를 사용할 때이 오류가 비슷합니다 나타났습니다. 하지만 제 경우에는 .xls (2003) 형식으로 Microsoft.Jet.OLEDB.4.0을 사용하고 있으므로 아무 문제가 없습니다. 그러나 어떻게 든 그것은 아직도 일어났다.
이 코드는 테스트 한 다른 .xls 파일에서도 작동합니다. # Snippet1을 사용하여 변환하여 생성 된 파일에만 작동하지 않습니다. 그러나 # Snippet1을 사용하여 파일을 만든 다음 모든 셀을 새로운 .xls 파일로 복사한다고 가정합니다. # Snippet2는이 새 파일에 대해 작동합니다. 즉, # Snippet1에서 직접 제작 한 파일 만 작동하지 않습니다.
나는 뭔가 잘못했다고 생각했습니다. 그래서 누군가가 나를 도울 수 있기를 바랍니다.
어떻게 할 수 있습니까? 너라면 그렇게 될거야. – rofans91
나는 그 문제를 혼자서 해결할 수 있었다. 너의 설명이 옳았다. .xls 파일을 만드는 것은 나쁜 방법이었습니다. – rofans91