数据从c#导出到excel

我想从数据表导出数据到Excel,但是当我打开Excel我得到附加的错误:

在这里输入图像说明

下面还有我用来导出数据的代码。

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(); 

  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

问题是你没有使用任何的Excel组件来编写Excel文件。 如果你可以使用,那么试试这个,否则对你的问题的评论将是有益的:

 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(); } } 

我find了一个简单的出口方式。 我只是使用CSV文件进行数据导出,并使用编码UTF32。 这有助于数据导出,而且任务也轻松完成。