Сводная таблица Visual studio excel не показывает данные
Здравствуйте, я попытался создать сводную таблицу excel с помощью C# windowsForm.
Мне нужно получить данные из SqlServer, но в моем файле Excel ничего не написано.
Что я уже пробовал:
private void button2_Click(object sender, EventArgs e) { string fileTest = @"C\Test\Pivot.xlsx"; if (File.Exists(fileTest)) { File.Delete(fileTest); } Excel.Application oApp; Excel.Worksheet oSheet; Excel.Workbook oBook; oApp = new Excel.Application(); oBook = oApp.Workbooks.Add(); oSheet = (Excel.Worksheet)oBook.Worksheets.get_Item(1); string constr = @"Data Source=XXX;Initial Catalog=XXX;User ID=XXXX;Password=XXXXX"; using (SqlConnection con = new SqlConnection(constr)) { using (SqlDataAdapter sda = new SqlDataAdapter("SELECT [C9],[OID],[USERMODIF] FROM [AffecAnalytique].[dbo].[C9_V] where[OID] != '" + textBox1.Text + "' order by [DATEMODIF] DESC", con)) { //Fill the DataTable with records from Table. DataTable dt = new DataTable(); sda.Fill(dt); //Insert the Default Item to DataTable. DataRow row = dt.NewRow(); dt.Rows.InsertAt(row, 0); row[0] = "C9"; row[1] = "OID"; row[2] = "USERMODIF"; //string x = row[0].ToString(); oSheet.Cells[1, 1] = row[0].ToString(); oSheet.Cells[1, 2] = row[1].ToString(); oSheet.Cells[1, 3] = row[2].ToString(); //MessageBox.Show(x); } } // now capture range of the first sheet = I will need this to create pivot table Excel.Range oRange = oSheet.Range["A1", "C1000"]; // create second sheet if (oApp.Application.Sheets.Count < 2) { oSheet = (Excel.Worksheet)oBook.Worksheets.Add(); } else { oSheet = oApp.Worksheets[2]; } oSheet.Name = "Pivot Table"; // specify first cell for pivot table Excel.Range oRange2 = oSheet.Cells[1, 1]; // create Pivot Cache and Pivot Table Excel.PivotCache oPivotCache = oBook.PivotCaches().Create(Excel.XlPivotTableSourceType.xlDatabase, oRange, Excel.XlPivotTableVersionList.xlPivotTableVersion14); Excel.PivotTable oPivotTable = oPivotCache.CreatePivotTable(TableDestination: oRange2, TableName: "Summary"); // create Pivot Field, note that name will be the same as column name on sheet one Excel.PivotField oPivotField = (Excel.PivotField)oPivotTable.PivotFields("C9"); oPivotField.Orientation = Excel.XlPivotFieldOrientation.xlDataField; oPivotField.Function = Excel.XlConsolidationFunction.xlSum; oPivotField.Name = " C9"; // by default name will be something like sumOfSalary, to change it, assign new name to it // name cannot be the same as Pivot Fields, therefore I added empty space in front of it. // name cannot be empty either // save oBook.SaveAs(fileTest); oBook.Close(); oApp.Quit(); }
Gerry Schmitz
Сначала пиши (тестируй), а потом поворачивай. В этот момент вы не знаете, что работает, а что нет.