Announcement

Collapse
No announcement yet.

Một số vấn đề khi export dữ liệu từ datagridview ra excel!

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C#] Một số vấn đề khi export dữ liệu từ datagridview ra excel!

    Mình đang muốn export datagridview ra một file excel và hiển thị ra màn hình, nhưng cứ dạy đến dòng này thì VS báo có lỗi, tìm trên mạng cả buổi sáng vẫn không rõ nguồn gốc lỗi trong trường hợp của mình là gì (đã add thư viên, add references, cài Office,..)







    Mình đã search google và có cách khác để export mà không cần hiển thị ra màn hình, chỉ chọn nơi save file lại, nhưng khi đọc file thì các ô đánh chữ tiếng Việt bị lỗi font hết.

    Code:
    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() + dGV.Rows[i].Cells[j].Value.ToString() + "\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 btn_xuatdsNV_Click(object sender, EventArgs e)
            {
                 SaveFileDialog sfd = new SaveFileDialog();
                 sfd.Filter = "Excel Documents (*.xls)|*.xls";
                 sfd.FileName = "export.xls";
                 if (sfd.ShowDialog() == DialogResult.OK)
                 {
                     //ToCsV(dataGridView1, @"c:\export.xls");
                     ToCsV(nHANVIEN_DTODataGridView, sfd.FileName); // Here dataGridview1 is your grid view name 
                 }
            }
    Mong mọi người góp ý cách giải quyết cho 2 tình huống trên.

  • #2
    cái tình huống 2 ấy bạn thay
    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
    thành cái này chạy ổn đó
    FileStream fs = new FileStream(filename,FileMode.Create);
    StreamWriter bw = new StreamWriter(fs,Encoding.Unicode);
    bw.Write(stOutput); //write the encoded file

    Comment


    • #3
      Cảm ơn anh Thanh nhiều! Em đã sửa và thấy ok rùi, các chữ tiếng Việt không bị lỗi font nữa, đoạn code này em mới kiếm được nên copy vào chạy thử thui chứ chưa hiểu rõ về nó. Giờ thì xuất file được rồi, có điều khi bật file .xls xuất ra thì Excel nó báo thế này là sao anh nhỉ? (trước khi sửa code cũng hiện thế này)


      Nội dung bên trong thì vẫn bình thường, nhưng mà để thế này thì không "đẹp mắt" lắm.. ^^

      Comment


      • #4
        em tham khảo đây thử http://notepad.cc/daotimo46 cái này chắc ok đó
        Last edited by 09520645; 12-06-2013, 20:24.

        Comment


        • #5
          Originally posted by 09520645 View Post
          em tham khảo đây thử http://notepad.cc/daotimo46 cái này chắc ok đó
          Nó vẫn báo lỗi như hình em đăng ở #1 anh à. Cái ở #3 là do mình lưu ở .xls đọc bằng 2010 nó cảnh báo hở anh? Tại em muốn lưu ở .xls để người dùng đang sử dụng 2000, 2007 hay 2010 cũng xem được. Nếu lưu file .xlsx thì hơi bất tiện.

          Comment


          • #6
            Originally posted by 11520467 View Post
            Nó vẫn báo lỗi như hình em đăng ở #1 anh à. Cái ở #3 là do mình lưu ở .xls đọc bằng 2010 nó cảnh báo hở anh? Tại em muốn lưu ở .xls để người dùng đang sử dụng 2000, 2007 hay 2010 cũng xem được. Nếu lưu file .xlsx thì hơi bất tiện.
            lần này chắc fix được 2 lỗi trên http://notepad.cc/daotimo46

            Comment


            • #7
              Originally posted by 09520645 View Post
              lần này chắc fix được 2 lỗi trên http://notepad.cc/daotimo46
              Vẫn là cái lỗi bí ẩn ở hình đầu tiên anh ơi ^^!

              Comment


              • #8
                Originally posted by 11520467 View Post
                Vẫn là cái lỗi bí ẩn ở hình đầu tiên anh ơi ^^!
                nếu rảnh em gửi cái bài của em cho anh xem thử
                nguyenthanh6606@gmail.com

                Comment


                • #9
                  Originally posted by 09520645 View Post
                  nếu rảnh em gửi cái bài của em cho anh xem thử
                  nguyenthanh6606@gmail.com
                  email có sai không anh? sao em gửi gmail có báo về không tìm thấy. Email của em: kimtung1810@gmail.com

                  Comment

                  LHQC

                  Collapse
                  Working...
                  X