<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>汇总统计</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<br />
<asp:Label ID="Label1" runat="server" Text="统计仪号"></asp:Label>
<asp:TextBox ID="txtDevNo" runat="server"></asp:TextBox>
<asp:Label ID="Label2" runat="server" Text="站点名称"></asp:Label>
<asp:TextBox ID="txtname" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label3" runat="server" Text="额定电压"></asp:Label>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:Label ID="Label4" runat="server" Text="打印日期"></asp:Label>
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<asp:Label ID="Label5" runat="server" Text="统计期限"></asp:Label>
<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
<br />
<br />
<asp:Label ID="Label6" runat="server" Text="主管"></asp:Label>
<asp:TextBox ID="txtzhuguan" runat="server"></asp:TextBox>
<asp:Label ID="Label7" runat="server" Text="负责人"></asp:Label>
<asp:TextBox ID="txtfuzeren" runat="server"></asp:TextBox>
<asp:Label ID="Label8" runat="server" Text="制表"></asp:Label>
<asp:TextBox ID="txtzhibiaoren" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>
设计图:
using System.Runtime.InteropServices;
using System.IO;
using Microsoft.Office.Interop.Excel;
using System.Reflection;
using System.Data.SqlClient;
namespace XML2Excel
{
public partial class Export3 : System.Web.UI.Page
{
ExcelOperate excelOperate = new ExcelOperate();
public static readonly string ConnectionStrings = ConfigurationManager.ConnectionStrings["DLTDBConnectionString"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
}
void InportExcel()
{
string save_path = "", tick = "";
ExcelOperate excelOperate = new ExcelOperate();
string temp_path = Server.MapPath("xls_files");//生成的文件存放路径
string template_path = Server.MapPath("xls_template");//模板路径
string url = ConfigurationManager.AppSettings["path"].ToString();
if (!Directory.Exists(temp_path))
{
Directory.CreateDirectory(temp_path);// 创建指定路径中的所有目录。
Directory.CreateDirectory(template_path);
}
try
{
DataSet ds = bindGrid();
//DataTable dt = ds.Tables[0];
//DataView dv = ds.Tables[0] as DataView;
//如果使用不采用任何参数的构造函数来创建 DataView,那么在设置 Table 属性之前,将无法使用 DataView
DataView dv = ds.Tables[0].DefaultView;
//建立一个Excel.Application的新进程
Application app = new Application();
if (app == null)
{
return;
}
app.Visible = false;
app.UserControl = true;
Workbooks workbooks = app.Workbooks;
//_Workbook workbook = workbooks.Add(template_path + "//EXCEL测试模板.xls");//这里的Add方法里的参数就是模板的路径
_Workbook workbook = workbooks.Add(template_path + "//TotalHZ.xls");
Sheets sheets = workbook.Worksheets;
_Worksheet worksheet = (_Worksheet)sheets.get_Item(1);//模板只有一个sheet表
if (worksheet == null)
{
return;
}
string str="";//截取年月
string temp = "";
string strMonth = "";
worksheet.Cells[2, 2] = txtDevNo.Text;//统计仪编号
worksheet.Cells[2, 5] = txtname.Text;//站点名称
worksheet.Cells[2, 8] = TextBox3.Text;//额定电压
worksheet.Cells[2, 10] = TextBox4.Text;//打印日期
worksheet.Cells[2, 13] = TextBox5.Text;//统计日期
for (int i = 0; i < dv.Table.Columns.Count; i++)//列的总行数
{
for (int j = 0; j < dv.Table.Rows.Count; j++)//行的总行数
{
str = dv[j].Row[1].ToString();//获取月统计表的time
temp = str.Remove(0, str.IndexOf("-") + 1);
strMonth = temp.Substring(0, temp.IndexOf("-"));//获得月份
if (i > 1)
{//前面有两列不要显示,所以开始列是从2行,2列开始记录
worksheet.Cells[2 + i, Convert.ToInt16(strMonth) + 1] = dv[0].Row[i].ToString();
}
}
}
worksheet.Cells[28, 2] = txtzhuguan.Text;
worksheet.Cells[28, 5] = txtfuzeren.Text;
worksheet.Cells[28, 8] = txtzhibiaoren.Text;
//if (i > 1)
//{
// //for (int j = 2; j < dv.Table.Rows.Count+2; j++)
// //{//总记录行数
// worksheet.Cells[2 + i, Convert.ToInt16(strMonth)+1] = dv[0].Row[i].ToString();
// //}
// //前面有两列不要显示,所以开始列是从2行,2列开始记录
// //worksheet.Cells[2 + i, 2] = dv[0].Row[i].ToString();//Cells[几行,几列]
// ////原始数据正规格式从4行,2列开始
// //worksheet.Cells[2 + i, 3] = dv[1].Row[i].ToString();
// //worksheet.Cells[2 + i, 4] = dv[2].Row[i].ToString();
// //worksheet.Cells[2 + i, 5] = dv[3].Row[i].ToString();
// //worksheet.Cells[2 + i, 6] = dv[4].Row[i].ToString();
// //worksheet.Cells[2 + i, 7] = dv[5].Row[i].ToString();
// //worksheet.Cells[2 + i, 8] = dv[6].Row[i].ToString();
// //worksheet.Cells[2 + i, 9] = dv[7].Row[i].ToString();
// //worksheet.Cells[2 + i, 10] = dv[8].Row[i].ToString();
// //worksheet.Cells[2 + i, 11] = dv[9].Row[i].ToString();
// //worksheet.Cells[2 + i, 12] = dv[10].Row[i].ToString();
// //worksheet.Cells[2 + i, 13] = dv[11].Row[i].ToString();
//}
//excelOperate.SetBold(worksheet, worksheet.Cells[4 + i, 1], worksheet.Cells[4 + i, 1]); //黑体
//excelOperate.SetHAlignCenter(worksheet, worksheet.Cells[4 + i, 1], worksheet.Cells[4 + i, 3]);//居中
//worksheet.get_Range(worksheet.Cells[3 + i, 1], worksheet.Cells[3 + i, 3]).Borders.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);
tick = DateTime.Now.Ticks.ToString();
save_path = temp_path + "//" + tick + ".xls";
workbook.SaveAs(save_path, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
excelOperate.Dispose(worksheet, workbook, app);//关闭Excel进程
}
catch
{
Response.Write("Error");
}
finally
{
Response.End();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
InportExcel();
}
DataSet bindGrid()
{
SqlConnection sqlconn = new SqlConnection(ConnectionStrings);
sqlconn.Open();
//where DevNo=" + txtDevNo.Text + "
string sql = "select * from MonthStats where DevNo=" + txtDevNo.Text + " order by [Time] asc ";//这里一定按顺序对号入座
SqlCommand cmd = new SqlCommand(sql, sqlconn);
SqlDataAdapter adpater = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adpater.Fill(ds);
return ds;
}
}
}
效果图