① 怎样把DataGrid的数据导出到Excel以供打印?
② 之前已经为DataGrid设置了TableStyle,即自定义了列标题和要显示的列,如果想以自定义的视图导出数据该怎么办?
③ 把数据导出到Excel后,怎样为它设置边框啊?
④ 怎样使从DataGrid导出到Excel的某个列居中对齐?
⑤ 数据从DataGrid导出到Excel后,怎样使标题行在打印时出现在每一页?
⑥ DataGrid数据导出到Excel后打印时每一页显示’当前页/共几页’,怎样实现?
①
private void button1_Click(object sender, System.EventArgs e)

{

int row_index, col_index;
row_index = 1;
col_index = 1;

Excel.ApplicationClass excel = new Excel.ApplicationClass();

excel.Workbooks.Add(true);

DataTable dt = ds.Tables["table"];

foreach(DataColumn dcHeader in dt.Columns)

excel.Cells[row_index, col_index++] = dcHeader.ColumnName;

foreach(DataRow dr in dt.Rows)

{

col_index = 0;

foreach(DataColumn dc in dt.Columns)

{

excel.Cells[row_index+1, col_index+1] = dr[dc];

col_index++;

}

row_index++;

}

excel.Visible = true;
}

private void Form1_Load(object sender, System.EventArgs e)

{

SqlConnection conn = new SqlConnection("server=tao; uid=sa; pwd=; database=pubs");

conn.Open();

SqlDataAdapter da = new SqlDataAdapter("select * from authors", conn);

ds = new DataSet();

da.Fill(ds, "table");

dataGrid1.DataSource = ds;

dataGrid1.DataMember = "table";

}
②dataGrid1.TableStyles[0].GridColumnStyles[index].HeaderText; //index可以从0~dataGrid1.TableStyles[0].GridColumnStyles.Count遍历。
③
Excel.Range range;

range=worksheet.get_Range(worksheet.Cells[1,1],xSt.Cells[ds.Tables[0].Rows.Count+1,ds.Tables[0].Columns.Count]);

range.BorderAround(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlThin,Excel.XlColorIndex.xlColorIndexAutomatic,null);
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;

range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex =Excel.XlColorIndex.xlColorIndexAutomatic;

range.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;

range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin;
④ range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter
⑤ worksheet.PageSetup.PrintTitleRows = "$1:$1";
⑥ worksheet.PageSetup.CenterFooter = "第&P页 / 共&N页";
② 之前已经为DataGrid设置了TableStyle,即自定义了列标题和要显示的列,如果想以自定义的视图导出数据该怎么办?
③ 把数据导出到Excel后,怎样为它设置边框啊?
④ 怎样使从DataGrid导出到Excel的某个列居中对齐?
⑤ 数据从DataGrid导出到Excel后,怎样使标题行在打印时出现在每一页?
⑥ DataGrid数据导出到Excel后打印时每一页显示’当前页/共几页’,怎样实现?
①
private void button1_Click(object sender, System.EventArgs e)
{
int row_index, col_index;
row_index = 1;
col_index = 1; 
Excel.ApplicationClass excel = new Excel.ApplicationClass(); 
excel.Workbooks.Add(true); 
DataTable dt = ds.Tables["table"]; 
foreach(DataColumn dcHeader in dt.Columns)
excel.Cells[row_index, col_index++] = dcHeader.ColumnName; 
foreach(DataRow dr in dt.Rows)
{
col_index = 0; 
foreach(DataColumn dc in dt.Columns)
{
excel.Cells[row_index+1, col_index+1] = dr[dc]; 
col_index++; 
}
row_index++; 
}
excel.Visible = true;
} 
private void Form1_Load(object sender, System.EventArgs e)
{
SqlConnection conn = new SqlConnection("server=tao; uid=sa; pwd=; database=pubs"); 
conn.Open(); 
SqlDataAdapter da = new SqlDataAdapter("select * from authors", conn); 
ds = new DataSet(); 
da.Fill(ds, "table"); 
dataGrid1.DataSource = ds; 
dataGrid1.DataMember = "table"; 
}
③
Excel.Range range; 
range=worksheet.get_Range(worksheet.Cells[1,1],xSt.Cells[ds.Tables[0].Rows.Count+1,ds.Tables[0].Columns.Count]); 
range.BorderAround(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlThin,Excel.XlColorIndex.xlColorIndexAutomatic,null);
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; 
range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex =Excel.XlColorIndex.xlColorIndexAutomatic; 
range.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous; 
range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin; 
⑤ worksheet.PageSetup.PrintTitleRows = "$1:$1";
⑥ worksheet.PageSetup.CenterFooter = "第&P页 / 共&N页";

浙公网安备 33010602011771号