public static Byte[] ToExcel(F0Model.FilteredData data) { MemoryStream ms; UInt32 zoomScale = 100; String fontName = "Arial"; Double fontSize = 10; using (Spreadsheet spreadsheet = new Spreadsheet(1)) // один лист { spreadsheet.SetSheetName(1, "Отчёт МДВ 1"); spreadsheet.SetZoomScale(zoomScale); spreadsheet.SetFont(0, fontName, fontSize); // default font spreadsheet.SetFont(1, fontName, fontSize); // data font UInt32 dxfId = spreadsheet.AppendDifferentialFormat("font-weight: bold;"); XlWorksheet[] wss = spreadsheet.Wss; GenerateColumns(wss[0], Md.Table1Columns); GenrateSheetData0(wss[0], data); //GenerateMergeCells(wss[0]); ///GenerateConditionalFormatting(wss[0], dxfId, t); ///GenerateBackgroundColor(wss[0], t); GeneratePageSetup(wss[0]); ms = spreadsheet.CreateDocument(); } return(ms.ToArray()); }
public static void GenrateSheetData0(XlWorksheet ws, F0Model.FilteredData data) { UInt32 rowIndex = 0; UInt32 columnIndex = 0; // строка заголовка columnIndex = 0; foreach (Md.TableColumn column in Md.Table1Columns) { String cellValueText = column.Caption; ws.UpsertCell(rowIndex, columnIndex, 1, cellValueText); // CellValues.SharedString columnIndex++; } rowIndex++; // строки данных for (Int32 ri = 0; ri < data.RowsCount; ri++) { F0Model.FilteredData.ItemArray items = data[ri]; columnIndex = 0; foreach (Md.TableColumn column in Md.Table1Columns) { Object value = items[column.ColumnName]; Type type = column.DataType; AppendValueToSpreadsheetCell(ws, rowIndex, columnIndex, value, type); columnIndex++; } rowIndex++; } /* * // сумма по таблице столбца "Сумма закуп." * { * String f = "=SUM(N2:N" + rowIndex.ToString() + ")"; * ws.UpsertCell(rowIndex, 13, 3, "0", f); // CellValues.Number * } * // сумма по таблице столбца "Вес" * { * String f = "=SUM(Q2:Q" + rowIndex.ToString() + ")"; * ws.UpsertCell(rowIndex, 16, 3, "0", f); // CellValues.Number * } * // сумма по таблице столбца "Объём" * { * String f = "=SUM(R2:R" + rowIndex.ToString() + ")"; * ws.UpsertCell(rowIndex, 17, 3, "0", f); // CellValues.Number * } * // сумма по таблице столбца "Предельная оптовая сумма" * { * String f = "=SUM(T2:T" + rowIndex.ToString() + ")"; * ws.UpsertCell(rowIndex, 19, 3, "0", f); // CellValues.Number * } * // сумма по таблице столбца "Сумма продажи" * { * String f = "=SUM(V2:V" + rowIndex.ToString() + ")"; * ws.UpsertCell(rowIndex, 21, 3, "0", f); // CellValues.Number * } * rowIndex++; * // сумма по таблице столбца "Сумма закуп." если "Страна" == Россия * { * ws.UpsertCell(rowIndex, 12, 2, "Россия"); // CellValues.SharedString * String f = String.Format( * "=SUMIF(I{0}:I{1},\"=Россия\",N{0}:N{1})" + * "+SUMIF(I{0}:I{1},\"=Республика Беларусь\",N{0}:N{1})" + * "+SUMIF(I{0}:I{1},\"=Беларусь\",N{0}:N{1})" + * "+SUMIF(I{0}:I{1},\"=Казахстан\",N{0}:N{1})" + * "+SUMIF(I{0}:I{1},\"=Армения\",N{0}:N{1})", 2, (rowIndex - 1)); * ws.UpsertCell(rowIndex, 13, 3, "0", f); // CellValues.Number * f = "=(N" + (rowIndex + 1).ToString() + "/N" + rowIndex.ToString() + ")*100"; * ws.UpsertCell(rowIndex, 14, 3, "0", f); // CellValues.Number * } * rowIndex++; * // две таблицы с итогами и данными из шапки * { * ws.UpsertCell(rowIndex, 1, 2, "НМЦК"); // CellValues.SharedString * ws.UpsertCell(rowIndex, 2, 3, h.Rows[0]["сумма_лота"]); // CellValues.Number * ws.UpsertCell(rowIndex, 7, 2, "Сумма по закупке (руб)"); // CellValues.SharedString * ws.UpsertCell(rowIndex, 8, 3, 0D, "=N" + (rowIndex - 1).ToString()); // CellValues.Number * rowIndex++; * ws.UpsertCell(rowIndex, 1, 2, "График поставки"); // CellValues.SharedString * ws.UpsertCell(rowIndex, 2, 2, h.Rows[0]["график_поставки"] as String); // CellValues.SharedString * ws.UpsertCell(rowIndex, 7, 2, "Наценка (%)"); // CellValues.SharedString * ws.UpsertCell(rowIndex, 8, 3, 10D); // CellValues.Number * rowIndex++; * ws.UpsertCell(rowIndex, 1, 2, "Срок годности"); // CellValues.SharedString * ws.UpsertCell(rowIndex, 2, 2, h.Rows[0]["требования_по_сроку_годности"] as String); // CellValues.SharedString * ws.UpsertCell(rowIndex, 7, 2, "Прибыль (руб)"); // CellValues.SharedString * ws.UpsertCell(rowIndex, 8, 3, 0D, "=I" + (rowIndex - 1).ToString() + "*I" + rowIndex.ToString() + "/100"); // CellValues.Number * rowIndex++; * ws.UpsertCell(rowIndex, 7, 2, "Сумма с наценкой (руб)"); // CellValues.SharedString * ws.UpsertCell(rowIndex, 8, 3, 0D, "=I" + (rowIndex - 2).ToString() + "+I" + rowIndex.ToString()); // CellValues.Number * rowIndex++; * ws.UpsertCell(rowIndex, 7, 2, "Транспорт (руб)"); // CellValues.SharedString * ws.UpsertCell(rowIndex, 8, 3, 0D); // CellValues.Number * rowIndex++; * ws.UpsertCell(rowIndex, 7, 2, "Минимальная сумма (руб)"); // CellValues.SharedString * ws.UpsertCell(rowIndex, 8, 3, 0D, "=I" + (rowIndex - 1).ToString() + "+I" + rowIndex.ToString()); // CellValues.Number * rowIndex++; * } */ }