1、 /读取数据库绝对路径 DataRow drColumnToDisplay = new DataRowds.Tables0.Select(visiable = true).Length; string strName = new stringdrColumnToDisplay.Length; drColumnToDisplay = ds.Tables0.Select();/读取xml中有效的列名 columnList = new List(); foreach (DataRow dr in drColumnToDisplay) dtColumn = new DataColumn(); dtCo
2、lumn.ColumnName = drstrucrtName.ToString(); dt.Columns.Add(dtColumn); columnList.Add(dr.ToString(); strNamei = dr i += 1; /增加数据行 System.Data.DataTable dt1 = fillDT( for (i = 0; i = dt1.Rows.Count - 1; i+) DataRow dr = dt.NewRow(); for (int j = 0; j = dt1.Columns.Count - 1; j+) string a = dt1.Columns
3、j.ColumnName.ToString(); if (caseName(dt1.Columnsj.ColumnName.ToString(), dt1, i, j) != ) drdt1.Columnsj.ColumnName.ToString() = caseName(dt1.Columnsj.ColumnName.ToString(), dt1, i, j); dt.Rows.Add(dr); this.dataGridView1.DataSource = dt; for (int k = 0; k 0) seekword = and + seekword; sqlword = sel
4、ect * from tb_service coda = new OleDbDataAdapter(sqlword, conn); try DataSet fillds = new DataSet(); coda.Fill(fillds, list c = fillds.Tables.Rows.Count; GC.Collect(); return fillds.Tables; catch (Exception e) return dt; private string caseName(string name, System.Data.DataTable dt, int i, int j) i
5、nt keyIndex = columnList.IndexOf(name); if (keyIndex != -1) return dt.Rowsidt.Columnsj.ColumnName.ToString().ToString(); return private string columnName(string name) switch (name) case service_name:服务名称service_type服务类别service_price服务价格service_cycle服务时限cycle_time服务周期start_time开始时间available是否有效 priva
6、te string colName(System.Data.DataTable dt) /获取DataGridView列名 string colName = for (int i = 0; colName = dt.Columnsi.ColumnName.ToString() + | + colName; colName = colName.Substring(0, colName.LastIndexOf( string sColName = colName.Split(new char | ); string newColName = new stringsColName.Length; f
7、or (int j = sColName.Length - 1; j = 0; j-) newColName(sColName.Length - 1) - j = sColNamej; return newColName; private void button1_Click(object sender, EventArgs e) ExportExcel.ExcelOP ep = new ExcelOP(); ep.DataTableToExcel(colName(System.Data.DataTable)this.dataGridView1.DataSource), test, (Syst
8、em.Data.DataTable)this.dataGridView1.DataSource, DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss), , 0, 0, 0); private void button2_Click(object sender, EventArgs e) Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); app.Visible = true; Workbook wBook = (Wor
9、kbook)app.Workbooks.Add(true); Worksheet wSheet = wBook.Worksheets1 as Worksheet;= colName(System.Data.DataTable)this.dataGridView1.DataSource).Length - 1; wSheet.Cells1, k + 1 = colName(System.Data.DataTable)this.dataGridView1.DataSource)k.ToString(); if (System.Data.DataTable)this.dataGridView1.Da
10、taSource).Rows.Count int row, col; row = (System.Data.DataTable)this.dataGridView1.DataSource).Rows.Count; col = (System.Data.DataTable)this.dataGridView1.DataSource).Columns.Count;= row - 1;= col - 1; wSheet.Cellsi + 2, j + 1 = (System.Data.DataTable)this.dataGridView1.DataSource).Rowsij.ToString()
11、; wSheet.Columns.AutoFit(); wSheet.Columns.Font.Name = Arial wSheet.Columns.Font.Size = 10; VB导出Excel :Public Class ExcelOP#Region Public Definition Private oXL As Excel.Application Private oWB As Excel.Workbook Private oSheet As Excel.Worksheet Private oRng As Excel.Range Private totalValue As Doub
12、le#End Region 导出Excel/summaryparam name=CellsName表头Title标题DT数据源ExcelDate日期SheetName工作簿名字ToTalName需要计算的列名isTotal是否需要计算colIndex列所在的索引值无返回值remarks Public Function DataTableToExcel(ByVal CellsName As String(), ByVal Title As String, ByVal DT As System.Data.DataTable, ByVal ExcelDate As String, ByVal She
13、etName As String, ByVal ToTalName As String, ByVal isTotal As Integer, ByVal colIndex As Integer) Dim i, j As Integer Dim startRow As Integer = 4 Dim startCell, endCell As String Try oXL = CreateObject(Excel.Application) create a excel application when was setup the office of excel oXL.Visible = Tru
14、e oWB = oXL.Workbooks.Add oSheet = oXL.ActiveSheet oSheet.Name = SheetName With oSheet For i = 0 To CellsName.Length - 1 .Cells(startRow, i + 1) = CellsName(i).ToString() Next End With Dim Rcount As Integer = DT.Rows.Count Dim Ccount As Integer = DT.Columns.Count If DT.Rows.Count 0 Then For i = 0 To
15、 Rcount - 1 For j = 0 To Ccount - 1 If (DT.Rows(i).Item(j).ToString().Length 10) Then oSheet.Cells(i + startRow + 1, j + 1) = + DT.Rows(i).Item(j) Else oSheet.Cells(i + startRow + 1, j + 1) = DT.Rows(i).Item(j) End If If isTotal = 1 Then Get_Total(Double.Parse(DT.Rows(i).Item(ToTalName)format the ex
16、cel column oSheet.Cells(i + 6, 1) = 总计 oSheet.Cells(i + 6, colIndex + 1) = totalValue oSheet.Range(A & (i + 6), Get_Excel_Rang(colIndex + 1) & (i + 6).Interior.ColorIndex = 37 (i + 6).Font.Bold = True startCell = startRow endCell = Get_Excel_Rang(CellsName.Length) & startRow.ToString() oSheet.Range(
17、startCell, endCell).Interior.ColorIndex = 37 oSheet.Range(startCell, endCell).Font.Bold = True oSheet.Range(startCell, endCell).Borders.LineStyle = Excel.XlLineStyle.xlContinuous oSheet.Columns.Font.Name = oSheet.Columns.Font.Size = 10 oSheet.Columns.HorizontalAlignment = Excel.XlHAlign.xlHAlignCent
18、er oSheet.Columns.AutoFit() oSheet.Cells(1, 1) = Title oSheet.Cells(2, 1) = ExcelDate oRng = oSheet.Range(A1E1 With oRng .Merge() .HorizontalAlignment = Excel.XlHAlign.xlHAlignLeftA2E2delete the sheet for excel oWB.Worksheets(Sheet2).Delete()Sheet3 Catch ex As Exception System.Windows.Forms.MessageB
19、ox.Show(ex.Message.ToString() End Try Return True End Function Private Function Get_Total(ByVal Value As Double) get the value and return sum of the value totalValue = totalValue + Value Private Function Get_Excel_Rang(ByVal sheetCells As Integer) As String Select Case sheetCells Case 1 Return Exit Select Case 2B Case 3C Case 4D Case 5E Case 6F Case 7G Case 8H Case 9I Case 10J Case 11K Case 12L Case 13M Case 14N Case 15O Case 16P Case 17Q Case 18R Case 19S Case 20T Case 21U Case 22V Case 23W Case 24X Case
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1