2015-01-23 2 views
0

나는 Excel로 데이터를 내보내는이 코드가 있습니다수출 DataGridView에 모든 셀에 대해 "텍스트"세포 형식화하는과 엑셀 2013

private void ToCsV(DataGridView dGV, string filename) 
{ 
    string stOutput = ""; 
    // Export titles: 
    string sHeaders = ""; 

    for (int j = 0; j < dGV.Columns.Count; j++) 
     sHeaders = sHeaders.ToString() + Convert.ToString(dGV.Columns[j].HeaderText) + "\t"; 
    stOutput += sHeaders + "\r\n"; 
    // Export data. 
    for (int i = 0; i < dGV.RowCount - 1; i++) 
    { 
     string stLine = ""; 
     for (int j = 0; j < dGV.Rows[i].Cells.Count; j++) 
      stLine = stLine.ToString() + Convert.ToString(dGV.Rows[i].Cells[j].Value) + "\t"; 
     stOutput += stLine + "\r\n"; 
    } 
    Encoding utf16 = Encoding.GetEncoding(1254); 
    byte[] output = utf16.GetBytes(stOutput); 
    FileStream fs = new FileStream(filename, FileMode.Create); 
    BinaryWriter bw = new BinaryWriter(fs); 
    bw.Write(output, 0, output.Length); //write the encoded file 
    bw.Flush(); 
    bw.Close(); 
    fs.Close(); 
} 
private void button6_Click(object sender, EventArgs e) 
{ 
    SaveFileDialog sfd = new SaveFileDialog(); 
    sfd.Filter = "Excel Documents (*.xlsx)|*.xlsx"; 
    sfd.FileName = "export.xls"; 
    if (sfd.ShowDialog() == DialogResult.OK) 
    { 
     //ToCsV(dataGridView1, @"c:\export.xls"); 
     ToCsV(dataGridView2, sfd.FileName); // Here dataGridview1 is your grid view name 
    } 
} 

하지만 난 파일을 엑셀 열 때의이 형식화하는이 세포를, 나는 모든 세포가 원하는 텍스트 formating.

+0

CSV를 만드십니까 ?? –

답변

0

단순히 .txt 파일을 만드는 것처럼 Excel 파일을 만들 수 없습니다. 현재 CSV 파일을 만들고 Excel에서 열면됩니다. 이 경우 스타일 정보를 보존하지 않습니다. [필요한 포맷].

Excel 형식의 파일 [Open XMl 파일 형식과 같은 .XLSX 파일]을 만들려면 라이브러리를 사용해야합니다. 여기에는 XML 파일 구조가 함께 압축되어 있으며 각 셀 형식이 무엇인지 정의 할 수 있습니다.

많은 옵션이 있습니다. EPPlus은 타사 라이브러리입니다. Open XMl SDK 2.5은 Microsoft의 권장 사항입니다. 또한 사용할 수있는 솔루션 인 Office Interops을 사용하는 다른 옵션이 있습니다.

0

XLS 확장명을 가진 CSV 파일은 Excel 파일이 아닙니다. MS Excel은 CSV 파일을 읽고 시트에 표시하는 것을 알고 있지만 실제 XLS 또는 XLSX 파일은 아닙니다. 또한 CSV 파일은 데이터 만 셀 서식을 저장할 수 없습니다.

Excel 파일을 내보내려면 Excel 라이브러리가 필요합니다 (예 : EasyXLS).

이 코드 샘플을 exporting DataGridView to Excel with cell formatting에 대해 살펴보십시오.

Office Interop 및 Microsoft 중 하나를 사용하지 않는 것이 좋습니다. 자세한 내용은 Microsoft의 관점에서 why not to use OLE Automation을 참조하십시오.

0

일반 CSV로 데이터를 저장하기 때문에 "셀 서식"을 사용할 수 없습니다. 일반적으로 Excel에서 볼 수있는 것은 가져온 파일에서 발견되는 데이터에 대한 "(너무) 현명한 해석"입니다 (예 : "숫자"처럼 보이는 것이 있으면 숫자를 표시하도록 셀 서식을 자동으로 설정합니다. 따라서 오른쪽 정렬).

stLine += "=\"" + Convert.ToString(dGV.Rows[i].Cells[j].Value) + "\"\t"; 

이 아니라 132 기록합니다 : = "132" 및

은 단순히 따옴표 안에 넣고 동일한 기호를 앞에 텍스트 값으로 항목을 정의하기 위해 Excel을 강제로 엑셀은 숫자 132 대신 문자열 132 (왼쪽 정렬)로 표시합니다.

+0

친애하는 친구. –