新文章

2010年10月8日 星期五

[C#] Gridview轉Excel

這是之前寫好很久的涵式,不過小弟記性差所以都沒去更新導致小弟記事本一堆code尚待整修....



切入正題!!

 public void print(DataGridView dataGridView1)
        {
            int columnCount = dataGridView1.Columns.Count;

            //創建Excel對象
            Microsoft.Office.Interop.Excel._Application excelApp = new ApplicationClass();

            //新建工作簿
            Microsoft.Office.Interop.Excel._Workbook workBook = excelApp.Workbooks.Add(true);

            //新建工作表
            Microsoft.Office.Interop.Excel._Worksheet worksheet = workBook.ActiveSheet as Microsoft.Office.Interop.Excel._Worksheet;

            //設置標題
            Microsoft.Office.Interop.Excel.Range titleRange = worksheet.get_Range(
            worksheet.Cells[1, 1], worksheet.Cells[1, columnCount]); //選取單元格
            titleRange.Merge(true);//合併單元格
            titleRange.Value2 =comboBox1.Text;//設置單元格內容
            //titleRange.Font.Name = "黑體";//設置字體
            //titleRange.Font.Color = Color.Red;//設置字體顏色
            titleRange.Font.Size = 20;//設置字體大小
            titleRange.Font.Bold = true;//字體加粗
            titleRange.HorizontalAlignment = XlHAlign.xlHAlignCenter;//水平居中
            titleRange.VerticalAlignment = XlVAlign.xlVAlignCenter;//垂直居中
            //titleRange.Borders.LineStyle = XlLineStyle.xlContinuous;//設置邊框
            //titleRange.Borders.Weight = XlBorderWeight.xlThin;//設置邊框粗?

            //設置表頭
            for (int i = 0; i < columnCount; i++)
            {
                Range headRange = worksheet.Cells[2, i + 1] as Range;//?取表頭單元格
                headRange.Value2 = dataGridView1.Columns[i].HeaderText;//設置單元格文本
                //headRange.Font.Name = "宋體";//設置字體
                headRange.Font.Size = 14;//字體大小
                headRange.Font.Bold = true;//加粗顯示
                headRange.HorizontalAlignment = XlHAlign.xlHAlignCenter;//水平居中
                headRange.VerticalAlignment = XlVAlign.xlVAlignCenter;//垂直居中
                //headRange.ColumnWidth = dataGridView1.Columns[i].Width / 7;//設置列寬
                //headRange.EntireColumn.AutoFit();//自動調整列寬
                headRange.Borders.LineStyle = XlLineStyle.xlContinuous;//設置邊框
                headRange.Borders.Weight = XlBorderWeight.xlThin;//設置邊框粗?
            }

            //填充數據
            for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
            {
                for (int j = 0; j < dataGridView1.Columns.Count; j++)
                {
                    Range contentRange = worksheet.Cells[i + 3, j + 1] as Range;//獲取單元格
                    contentRange.EntireColumn.AutoFit();//自動調整列寬
                    contentRange.RowHeight = 20;//設置行高
                    contentRange.Value2 = dataGridView1[j, i].Value;//設置單元格文本
                    contentRange.Borders.LineStyle = XlLineStyle.xlContinuous;//設置邊框
                    contentRange.Borders.Weight = XlBorderWeight.xlThin;//設置邊框粗?
                    contentRange.WrapText = true;//自動?行
                }
            }

            //設置每列格式
            for (int i = 0; i < dataGridView1.Columns.Count - 2; i++)
            {
                Range range = worksheet.get_Range(worksheet.Cells[3, i + 1], worksheet.Cells[dataGridView1.RowCount + 3, i + 1]);
                range.HorizontalAlignment = XlHAlign.xlHAlignCenter;//對齊方式
                range.NumberFormatLocal = "0";//格式化文本,單元格格式設置
                //range.FormulaR1C1 = strDTime;
            }
            //保存退出的Excel
            string fileName = @pp;
            //string fileName = System.Windows.Forms.Application.StartupPath + @"\OutExcel" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
            workBook.SaveCopyAs(fileName);
            workBook.Saved = true;
            //設置Excel是否可?
            excelApp.Visible = true;

            //顯示列印預覽
            //worksheet.PrintPreview(true);
        }

沒有留言:

張貼留言