2017-05-26 44 views
0

我需要在下载的Excel中显示'0565'。在datatable中,该值为'0565',但在将数据表分配给工作表后,下载的excel显示值为'565'。这是一个我需要显示它的ID,因为它是'0565'。以下是我的代码如何使用Aspose Cells在Excel中将第一位数字显示为0(零)

 DataTable dtExcelData = GetDataTableValue(); 
    dtExcelData.TableName = psPlanNo + "Template"; 

     var workbook = new Workbook(); 
     var worksheet = workbook.Worksheets[0];   
     worksheet.Cells.ImportDataTable(dtExcelData, true, 0, 0, true,true); 
     worksheet.AutoFilter.Range = worksheet.Cells.FirstCell.Name + ":" + worksheet.Cells.LastCell.Name; 
     Response.Clear(); 
     Response.Buffer = true; 
     Response.Charset = ""; 
     Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
     Response.AddHeader("content-disposition", "attachment;filename=" + psPlanNo + psSuffix + ".xlsx"); 
     worksheet.AutoFitColumns(); 

     Aspose.Cells.Style style = worksheet.Cells["A1"].GetStyle(); 
     style.ForegroundThemeColor = new ThemeColor(ThemeColorType.Accent1, 0); 
     style.Font.Color = Color.White; 
     style.Pattern = BackgroundType.Solid; 

     for (int lnColumn = 0; lnColumn <= worksheet.Cells.MaxColumn; lnColumn++) 
      worksheet.Cells[0, lnColumn].SetStyle(style); 

     Cells cells = worksheet.Cells; 
     Aspose.Cells.Style fontStyle = new Aspose.Cells.Style(); 
     Aspose.Cells.Style stylefont = workbook.Styles[workbook.Styles.Add()]; 
     stylefont.Font.Name = "Calibri"; 
     stylefont.Font.Size = 12; 
     StyleFlag flag = new StyleFlag(); 
     flag.FontName = true; 
     flag.FontSize = true; 
     cells.ApplyStyle(stylefont, flag); 

     using (MemoryStream memoryStream = new MemoryStream()) 
     { 
      workbook.Save(memoryStream, SaveFormat.Xlsx); 
      memoryStream.WriteTo(Response.OutputStream); 
      HttpContext.Current.Response.Flush(); 
      HttpContext.Current.Response.SuppressContent = true; 
      HttpContext.Current.ApplicationInstance.CompleteRequest(); 
     } 

突出显示的行是将数据集值分配给工作表并将字符串显示为Excel中的数字。 如果我用这个代码

worksheet.Cells.ImportDataTable(dtExcelData, true, 0, 0, true,false); 

我会得到“0565”,但也有一些列应是在数字格式也将被转换为文本。

是否有任何其他替代我的问题? 预先感谢

回答

0

请将最后一个参数从true设置为false。

worksheet.Cells.ImportDataTable(dtExcelData, true, 0, 0, true, false); 

,它应该解决您的问题。最后一个参数表示convertStringToNumber,如果将其设置为false,则不会将字符串转换为数字。

如果你不想使用这个属性,那么请您数字串之前分配'

0555 

应该像

'0055 

,它会工作得很好,那么。

注:我作为开发布道者的Aspose

+0

工作,我不想使用这两种技术。有没有其他解决方案? –

+0

还有一种将所有字符串值转换为数字的方法,但它也不是很合适,但可能是您可以使用它。即worksheet.Cells.ConvertStringToNumericValue(); – shakeel

+0

满足您要求的另一种解决方案: 您可以使用自定义格式将值设置为前导零。如Style.Custom =“0000”; – shakeel

相关问题