三种方法。
1、通过报表reportview
2.绑定到gridcontrol
this.gridControl1.ShowPrintPreview();
或者用数据流生成,但只能生成03版的。用07版的打开会弹出警告!
string saveFileName = "";
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = "Sheet1";
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < 0) return; //被点了取消
Stream myStream;
myStream = saveDialog.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
string str = "";
try
{
//写标题
for (int i = 0; i < dgv.Columns.Count; i++)
{
if (i > 0)
{
str += "\t";
}
str += dgv.Columns[i].Caption;
}
sw.WriteLine(str);
//写内容
for (int j = 0; j < dgv.RowCount; j++)
{
string tempStr = "";
for (int k = 0; k < dgv.Columns.Count; k++)
{
if (k > 0)
{
tempStr += "\t";
}
tempStr += ((DataRowView)dgv.GetRow(j)).Row.ItemArray[k].ToString();
}
sw.WriteLine(tempStr);
}
sw.Close();
myStream.Close();
//MessageBox.Show("导出成功");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
3.代码生成,引用Excel.dll操作
string saveFileName = "";
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = "Sheet1";
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < 0) return; //被点了取消
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
object missing = System.Reflection.Missing.Value;
if (xlApp == null)
{
MessageBox.Show("Excel对象,可能您的机子未安装Excel");
return;
}
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
Microsoft.Office.Interop.Excel.Range range;
//写入字段
for (int i = 0; i < ds1.Tables[0].Columns.Count; i++)
{
worksheet.Cells[1, i + 1] = ds1.Tables[0].Columns[i].ColumnName;
range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, i + 1];
range.ColumnWidth = 15; //单元格宽度
range.Font.Size = 14; //字体大小
range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; //字体居中
}
//写入数值
for (int r = 0; r < ds1.Tables[0].Rows.Count; r++)
{
for (int i = 0; i < ds1.Tables[0].Columns.Count; i++)
{
worksheet.Cells[r + 2, i + 1] = ds1.Tables[0].Rows[r][i];
range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[r + 2, i + 1];
range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; ;
}
System.Windows.Forms.Application.DoEvents();
}
try
{
worksheet.SaveAs(saveFileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel8, missing, missing, missing, missing, missing, missing, missing);
} //保存为03,07的兼容格式
catch
{
MessageBox.Show("将数据导入Excel文件失败!检查是否打开此文件!");
return;
}
workbook.Close(missing, missing, missing);
xlApp.Quit();
MessageBox.Show("生成Excel文件成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}