日期:2014-05-18 浏览次数:20912 次
private static bool ExportExcel() { if (saveFileName.IndexOf(":") < 0) return false; //被点了取消 Excel.Application xlApp = new Excel.Application(); object missing = System.Reflection.Missing.Value; if (xlApp == null) { MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel"); return false; } Excel.Workbooks workbooks = xlApp.Workbooks; Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet); Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1]; //取得sheet1 Excel.Range range; string strCaption = saveFileName.Remove(0, saveFileName.LastIndexOf('\\') + 1); strCaption = strCaption.Remove(strCaption.Length - 4, 4); long totalCount = dtDataSource.Rows.Count; long rowRead = 0; float percent = 0; range = (Excel.Range)worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[2, dtDataSource.Columns.Count]); //标题占用前两行 range.Merge(missing); //合并 range.Font.Bold = true; //粗体设置 range.Font.Size = 16; //字体大小设置 range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; //水平对齐设置 range.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter; //垂直对齐设置 //range.FormulaR1C1 = 公式; //公式设置 //range.ColumnWidth = 宽度; //列宽设置 //range.RowHeight = 行高; //行高 worksheet.Cells[1, 1] = strCaption; //写入字段 for (int i = 0; i < dtDataSource.Columns.Count; i++) { worksheet.Cells[4, i + 1] = dtDataSource.Columns[i].ColumnName; range = (Excel.Range)worksheet.Cells[4, i + 1]; range.Interior.ColorIndex = 15; range.Font.Bold = true; } //写入数值 for (int r = 0; r < dtDataSource.Rows.Count; r++) { for (int i = 0; i < dtDataSource.Columns.Count; i++) { worksheet.Cells[r + 5, i + 1] = dtDataSource.Rows[r][i]; } rowRead++; percent = ((float)(100 * rowRead)) / totalCount; Application.DoEvents(); } worksheet.SaveAs(saveFileName, missing, missing, missing, missing, missing, missing, missing, missing, missing); range = worksheet.get_Range(worksheet.Cells[4, 1], worksheet.Cells[dtDataSource.Rows.Count + 4, dtDataSource.Columns.Count]); range.BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlThin, Excel.XlColorIndex.xlColorIndexAutomatic, null); range.NumberFormat = "@"; //这句话是我在上面搜索到的,可惜不起作用 range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic; range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Excel.XlLineStyle.xlContinuous; range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight = Excel.XlBorderWeight.xlThin; if (dtDataSource.Columns.Count > 1) { range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic; } workbook.Close(missing, missing, missing);