数据不填充Excel文件C#

我有一个表单,允许用户从网格中的列表中select项目,并允许他们导出与选定项目对应的数据。 数据应该被导出到现有的excel模板。 我尝试了一些代码,但是发生什么事是当下载的Excel文件打开它只显示空白。 你能帮我,为什么发生这种情况,我的代码有什么问题。

以下是我的代码:在此先感谢

try { UpdateDataSelection(); string pFileName = "SubconOneLineList_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls"; string pSubConCodeLists = string.Empty; string pJobCodeKey = string.Empty; string pCountryCode = string.Empty; string pWorkCategoryCode = string.Empty; string pCapacityCode = string.Empty; string pOperativeCountryCode = string.Empty; string pNameAbbr = string.Empty; string pAffiliates = string.Empty; pSubConCodeLists = string.Join(",", DataSelection); if (pSubConCodeLists == string.Empty) { GetSubconDatabaseFilter(out pSubConCodeLists, out pNameAbbr, out pJobCodeKey, out pCountryCode, out pOperativeCountryCode, out pWorkCategoryCode, out pAffiliates, out pCapacityCode); } string pGridFilter = (rgvSubcontractor.MasterTableView.FilterExpression == null ? string.Empty : rgvSubcontractor.MasterTableView.FilterExpression); string pSortString = ""; if (rgvSubcontractor.MasterTableView.SortExpressions != null) { pSortString = ((rgvSubcontractor.MasterTableView.SortExpressions.GetSortString() == null) || (rgvSubcontractor.MasterTableView.SortExpressions.GetSortString() == string.Empty) ? pSortString : rgvSubcontractor.MasterTableView.SortExpressions.GetSortString()); } pSortString = (pSortString == string.Empty ? "COMPANY_NAME ASC" : pSortString + ", COMPANY_NAME ASC"); DataTable pDTSubconOneLineList = mSubContractorBS.getRptSubContractorOneLineList(pSubConCodeLists, pNameAbbr, string.Empty, string.Empty, pJobCodeKey, pCountryCode, pOperativeCountryCode, pWorkCategoryCode, pAffiliates, pCapacityCode); DataView pDVSubconOneLineList = new DataView(pDTSubconOneLineList); if (pGridFilter != string.Empty) { pDVSubconOneLineList.RowFilter = pGridFilter; } pDVSubconOneLineList.Sort = pSortString; pDTSubconOneLineList = pDVSubconOneLineList.ToTable(); pDTSubconOneLineList.TableName = "USP_RPT_SUBCON_ONE_LINE_LIST"; Process[] processList = Process.GetProcesses(); string path = Server.MapPath("~") + "\\SIS\\Template\\Download\\Subcon_Profile_List_Import_Template.xlsx"; //string targetPath = Convert.ToString(Session["App_Data_Path"]) + "EXPORT_OUTPUT"; string targetPath = Convert.ToString(Server.MapPath("~")) + "EXPORT_OUTPUT"; string destFile = System.IO.Path.Combine(targetPath, pFileName); if (!Directory.Exists(targetPath)) { Directory.CreateDirectory(targetPath); } File.Copy(path, destFile, true); object misValue = System.Reflection.Missing.Value; Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(destFile, 0, false, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[1]; xlWorkSheet.get_Range("A2", "AN" + xlWorkSheet.Rows.Count.ToString()).Clear(); object[,] objData = null; int rowcount = pDTSubconOneLineList.Rows.Count; objData = new Object[pDTSubconOneLineList.Rows.Count, pDTSubconOneLineList.Columns.Count]; for (int row = 0; row < pDTSubconOneLineList.Rows.Count; row++) { for(int column= 0; column < pDTSubconOneLineList.Columns.Count; column++) { objData[row, column] = pDTSubconOneLineList.Rows[row][column].ToString(); } } ((Excel.Worksheet)xlWorkBook.Sheets[1]).Select(Type.Missing); xlWorkBook.Save(); xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkBook); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkSheet); xlWorkSheet = null; xlWorkBook = null; xlApp = null; GC.Collect(); string pMimeType = string.Empty; string pEncoding = string.Empty; string pExtension = string.Empty; Response.Buffer = true; Response.Clear(); Response.AppendCookie(new HttpCookie("fileDownloadToken", hdDownLoadToken.Value)); Response.ContentType = pMimeType; Response.AddHeader("content-disposition", "attachment; filename=" + pFileName); Response.Flush(); } catch (Exception ex) { ErrorHelper.HandleError(ex); } 

您实际上并不是将数据写入工作表。

在for循环填充objData之后,请尝试:

 Excel.Range targetRange = xlWorkSheet.get_Range("A2", "AN" + xlWorkSheet.Rows.Count.ToString()); targetRange.Value = objData;