7

私は Excel のエクスポートに慣れていないので、誰かが ClosedXML で私を助けてくれることを願っています。

現時点では、データを Datatable に入れ、行を正しい型にフォーマットし、正しいレイアウトでエクスポートしています。

各セルに繰り返し数式を含む 1 つの行をエクスポートしようとすると、問題が発生します。

ファイルをエクスポートするときに強調表示して変換できる文字列として式を単純に追加しようとしましたが、これは明らかに理想的ではありません。ドキュメントがまったくないというXMLのクラスを見つけましたがXLFormula、これで何かをする必要があると思います。

現時点では(コメントアウトは私が使用していた方法であり、式を文字列としてXLFormula渡しXLFormula、ユニットごとの合計入札額として設定しようとしていました):

dt.Columns.Add("Qty", typeof(int));
dt.Columns.Add("Bid Per Unit GBP", typeof(double));
dt.Columns.Add("Total Bid GBP"); //typeof(XLFormula)
foreach (DataRow dr in dt.Rows)
{
    //XLFormula totalBidFormula = new XLFormula();

    dr["Qty"] = 1;
    dr["Bid Per Unit GBP"] = 0.00;
    dr["Total Bid GBP"] = "=[@Qty]*[@[Bid Per Unit GBP]]";

どんな助けでも大歓迎です。私がやろうとしていることが ClosedXML では不可能な場合はお知らせください。代替の XML エクスポーター (有料であっても) を提案していただけると助かります!

4

3 に答える 3

16

私と同じ立場の人がこれに出くわした場合に備えて、closedXML の式は非常に単純です。

私が理解していることから、値が追加された後、数式をセルに直接適用する必要があります。

数式を保持するために列全体が必要だったため、シートが処理されたときに単純な for ループを使用して現在のセルを取得しました

//get all rows in my datatable 
int totalRows = dt.Rows.Count;

//set the first that will be filled with data
int currentRow = 1;

//loop through each row.
for(int i = 0; i < totalRows; i++){

//the current cell will be whatever column you wish to format + the current row
string currentCell = "F" + currentRow;

//create your formula
string AdjustedPriceFormula = "=C" + currentRow + "*" + "D" + currentRow;

//apply your formula to the cell.
theSheet.Cells(currentCell).FormulaA1 = AdjustedPriceFormula;

//increment your counters to apply the same data to the following row
currentRow++

これは、複数の数式を複数の列/セルに追加してから何度か機能しました。

これが誰かを助けることを願っています!

于 2015-10-05T14:01:13.587 に答える