2017-03-09 51 views
0

Aspose.cellsを使用してExcelシートをデータとともにインポートしています。 Excelシートは、10進値を割り当てるSalary列で構成されています。私はデータベースから小数点の値を割り当てていますが、列は文字列形式として割り当てられます。 After Excel Import 各セルをダブルクリックすると、数値形式に変換されます。 enter image description here このため、「= SUM(M1:M20)」のような式は使用できません。Aspose.cellsを使用してインポート時にExcelで式を使用できない

私は、ボイドDownloadExcel(文字列psPlanNo、文字列psSuffix)を保護Aspose.Cellsは を使用してExcelをダウンロードするには、次の機能を使用しています { が { のDataTable dtExcelData = GetDataTableValue()してみてください。 dtExcelData.TableName = psPlanNo + "テンプレート";

 var workbook = new Workbook(); 
     var worksheet = workbook.Worksheets[0]; 
     worksheet.Cells.ImportDataTable(dtExcelData, true, "A1"); 
     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(); 
     } 
    } 
    catch (SqlException sql) 
    { 

     DbException(sql, MethodBase.GetCurrentMethod().Name); 
    } 
    catch (Exception ex) 
    { 
     GenericException(ex, MethodBase.GetCurrentMethod().Name); 
    } 
} 

誰にもこの問題の解決策がありますか?私は解決策を持っアドバンス

答えて

1

おかげで、にコード

worksheet.Cells.ImportDataTable(dtExcelData, true, "A1"); 

のこの行を変更します。

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

(注:最後のブールパラメータ "convertStringToNumberは" に設定する必要がありますtrue)

今はうまくいきます。:)

+0

正しい解決策です。文字列値と整数値は異なります。したがって、文字列またはテキスト値を数値または整数値に変換するには、MS-ExcelでEnterキーを押す必要があります。しかし、convertStringToNumberパラメータをtrueに設定すると、Aspose.Cellsは自動的に文字列値を数値に変換します。 – shakeel

関連する問題