2016-09-22 5 views
1

Я пытаюсь экспортировать данные из DataTable отличиться, но когда я открываю первенствовать Я получаю прилагаемое сообщение об ошибке:экспорт данных из C#, чтобы преуспеть

enter image description here

Также ниже код, который я используя для экспорта данных.

StreamWriter wr = new StreamWriter(@"C:\\Docs_Harshit\\file.xls"); 

for (int i = 0; i < dtFeeForm.Columns.Count; i++) 
{ 
    wr.Write(dtFeeForm.Columns[i].ToString().ToUpper() + "\t"); 
} 

wr.WriteLine(); 

for (int i = 0; i < (dtFeeForm.Rows.Count); i++) 
{ 
    for (int j = 0; j < dtFeeForm.Columns.Count; j++) 
    { 
     if (dtFeeForm.Rows[i][j] != null) 
     { 
      wr.Write(Convert.ToString(dtFeeForm.Rows[i][j]) + "\t"); 
     } 
     else 
     { 
      wr.Write("\t"); 
     } 
    }      
    wr.WriteLine(); 
}     
wr.Close(); 
+0

См. Http://stackoverflow.com/questions/151005/create-excel-xls-and-xlsx-file-from-c-sharp?rq=1 –

ответ

1
private void ExportToExl(bool firstTime) 
     { 
      //string path = string.Empty;    
      //Delete the file if it exists. 
      if (firstTime && File.Exists(savingFileName)) 
       File.Delete(savingFileName); 

      if (firstTime) 
      { 
       //This is the first time of creating the excel file and the first sheet. 
       // Create a spreadsheet document by supplying the filepath. 
       // By default, AutoSave = true, Editable = true, and Type = xlsx. 
       SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument. 
        Create(savingFileName, SpreadsheetDocumentType.Workbook); 

       // Add a WorkbookPart to the document. 
       WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart(); 
       workbookpart.Workbook = new DocumentFormat.OpenXml.Spreadsheet.Workbook(); 

       // Add a WorksheetPart to the WorkbookPart. 
       var worksheetPart = workbookpart.AddNewPart<WorksheetPart>(); 
       var sheetData = new SheetData(); 
       worksheetPart.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(sheetData); 
       var bold1 = new System.Windows.Documents.Bold(); 
       DocumentFormat.OpenXml.Spreadsheet.CellFormat cf = new DocumentFormat.OpenXml.Spreadsheet.CellFormat(); 

       // Add Sheets to the Workbook. 
       DocumentFormat.OpenXml.Spreadsheet.Sheets sheets; 
       sheets = spreadsheetDocument.WorkbookPart.Workbook. 
        AppendChild<DocumentFormat.OpenXml.Spreadsheet.Sheets>(new DocumentFormat.OpenXml.Spreadsheet.Sheets()); 

       // Append a new worksheet and associate it with the workbook. 
       var sheet = new Sheet() 
       { 
        Id = spreadsheetDocument.WorkbookPart. 
         GetIdOfPart(worksheetPart), 
        SheetId = sheetId, 
        Name = "Sheet" + sheetId 
       }; 
       sheets.Append(sheet); 

       //Add Header Row. 
       var headerRow = new Row(); 
       foreach (DataColumn column in ResultsData.Columns) 
       { 
        var cell = new Cell { DataType = CellValues.String, CellValue = new CellValue(column.ColumnName) }; 
        headerRow.AppendChild(cell); 
       } 
       sheetData.AppendChild(headerRow); 

       foreach (DataRow row in ResultsData.Rows) 
       { 
        var newRow = new Row(); 
        foreach (DataColumn col in ResultsData.Columns) 
        { 
         var cell = new Cell 
         { 
          DataType = CellValues.String, 
          CellValue = new CellValue(row[col].ToString()) 
         }; 
         newRow.AppendChild(cell); 
        } 
        sheetData.AppendChild(newRow); 
       }    
       workbookpart.Workbook.Save(); 
       spreadsheetDocument.Close(); 
      } 
    } 

Datatable является ResultsData

+0

Вы можете использовать этот код для экспорта в excel или в любой format .. .xlxs, .csv, .xlx –

0

Этот вопрос вы не используете Excel Component для записи первенствует файла. Если вы можете использовать то попробуйте это иначе комментарий на ваш вопрос будет полезно:

public void CreateExcelFile() 
{ 
    //Get the data from database into datatable 
    string cmdQry = "dbo.GET_Report"; 
    SqlCommand cmd = new SqlCommand(cmdQry); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.Add("@bySource", SqlDbType.VarChar).Value = "CLIENT".ToUpper(); 
    DataTable dtExcel = GetData(cmd); 

    //Clears all content output from the buffer stream. 
    Response.ClearContent(); 
    Response.Clear(); 
    //Adds HTTP header to the output stream 
    Response.AddHeader("content-disposition", string.Format("attachment; filename=try.xls")); 

    // Gets or sets the HTTP MIME type of the output stream 
    Response.ContentType = "application/vnd.ms-excel"; 
    string space = ""; 

    foreach (DataColumn dcolumn in dtExcel.Columns) 
    { 
     Response.Write(space + dcolumn.ColumnName); 
     space = "\t"; 
    } 
    Response.Write("\n"); 
    int countcolumn; 
    foreach (DataRow dr in dtExcel.Rows) 
    { 
     space = ""; 
     for (countcolumn = 0; countcolumn < dtExcel.Columns.Count; countcolumn++) 
     { 
      Response.Write(space + dr[countcolumn].ToString()); 
      space = "\t"; 
     } 
     Response.Write("\n"); 
    } 
    Response.Flush(); 
    Response.End(); 
} 

private DataTable GetData(SqlCommand cmd) 
    { 
     SqlConnection con = new SqlConnection(Bussiness.GetConnectionString("Default")); 
     cmd.Connection = con; 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataTable dt = new DataTable(); 

     try 
     { 
      con.Open(); 
      da.Fill(dt); 
      return dt; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
     finally 
     { 
      con.Close(); 
      da.Dispose(); 
      con.Dispose(); 
     } 
    } 
+0

Я получаю ошибку в объекте ответа, который является «Имя« Ответ »не существует в текущем контексте». Я использую пространство имен System.Web – Harshit

+0

, используя System.Web.UI; – Sak

+0

Надеюсь, вы разрабатываете его в веб-приложении. System.Web должен работать. Попробуйте также System.Web.HttpContext.Current.Response. – Sak

0

Я нашел простой способ для экспорта. Я просто использовал CSV-файл для экспорта данных и использовал Encoding UTF32. Это помогло для экспорта данных, и задача была выполнена легко.

Смежные вопросы