.net 把数据导出word 具体要求就是 点击导出,自动打开word显示数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #region 导入excel 验证及导入方法 //加载Excel 读取sheet表单 public DataSet LoadDataSheetExcel(string filePath) { string strConn; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'"; OleDbConnection OleConn = new OleDbConnection(strConn); OleConn.Open(); System.Data.DataTable OleDsExcle = OleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new[] { null, null, null, "Table" }); OleConn.Close(); DataSet ds = new DataSet(); ds.Tables.Add(OleDsExcle); return ds; } //加载Excel 读取sheet表单数据 public DataSet LoadDataSheetExcel(string filePath, string SheetName) { string strConn; strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'"; OleDbConnection OleConn = new OleDbConnection(strConn); OleConn.Open(); String sql = "SELECT * FROM [" + SheetName + "$]";//可是更改Sheet名称,比如sheet2,等等 OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn); DataSet OleDsExcle = new DataSet(); OleDaExcel.Fill(OleDsExcle, SheetName); OleConn.Close(); return filterDs(OleDsExcle); } public bool SaveDataTableToExcel(System.Data.DataTable excelTable, string filePath) { Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.ApplicationClass(); try { app.Visible = false; Workbook wBook = app.Workbooks.Add(true); Worksheet wSheet = wBook.Worksheets[1] as Worksheet; if (excelTable.Rows.Count > 0) { int row = 0; row = excelTable.Rows.Count; int col = excelTable.Columns.Count; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { string str = excelTable.Rows[i][j].ToString(); wSheet.Cells[i + 2, j + 1] = str; } } } int size = excelTable.Columns.Count; for (int i = 0; i < size; i++) { wSheet.Cells[1, 1 + i] = excelTable.Columns[i].ColumnName; } //设置禁止弹出保存和覆盖的询问提示框 app.DisplayAlerts = false; app.AlertBeforeOverwriting = false; //保存工作簿 wBook.Save(); //保存excel文件 app.Save(filePath); app.SaveWorkspace(filePath); app.Quit(); app = null; return true; } catch (Exception err) { return false; } finally { } } /// <summary> /// 过滤无用数据 /// </summary> private DataSet filterDs(DataSet ds) { ArrayList NullClums = new ArrayList(); for (int i = 0; i < ds.Tables[0].Columns.Count; i++) { if (ds.Tables[0].Rows[0][i].ToString() == "") { NullClums.Add(ds.Tables[0].Columns[i]); } } //过滤空列 foreach (DataColumn dc in NullClums) { ds.Tables[0].Columns.Remove(dc); } ArrayList FullClums = new ArrayList(); for (int i = 0; i < ds.Tables[0].Columns.Count; i++) { if (ds.Tables[0].Rows[0][i].ToString() != "") { FullClums.Add(ds.Tables[0].Rows[0][i].ToString()); } } System.Data.DataTable dt = fullDataDs(FullClums); //过滤空行 ds.Tables[0].Rows.RemoveAt(0); for (int i = 0; i < FullClums.Count; i++) { ds.Tables[0].Columns[i].ColumnName = FullClums[i].ToString(); } List<DataRow> removelist = new List<DataRow>(); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { bool rowdataisnull = true; for (int j = 0; j < ds.Tables[0].Columns.Count; j++) { if (ds.Tables[0].Rows[i][j].ToString().Trim() != "") { rowdataisnull = false; } } if (rowdataisnull) { removelist.Add(ds.Tables[0].Rows[i]); } } for (int i = 0; i < removelist.Count; i++) { ds.Tables[0].Rows.Remove(removelist[i]); } return ds; } private System.Data.DataTable fullDataDs(ArrayList Cloums) { System.Data.DataTable dt = new System.Data.DataTable(); for (int i = 0; i < Cloums.Count; i++) { DataColumn dc = new DataColumn(Cloums[i].ToString()); dt.Columns.Add(dc); } return dt; } #endregion可以直接用 看你对导出word 的格式是否要求严谨,然后你的导出word 的模版是不是一样的~方法都是不同的 http://kb.cnblogs.com/a/1274987/ 或者是这样子,我做一个word模版有很多格子,点击按钮,直接打开word我的模版,把数据显示在相应的位置上 点击按钮后, 打开word 不是下载那种,下载我会 <script type="text/javascript"> function ExportExcel(tid) { var curTbl = document.getElementById(tid); var oXL = new ActiveXObject("Excel.Application"); //创建ActiveXObject对象excel var oWB = oXL.Workbooks.Add(); //获取workbook对象 var oSheet = oWB.ActiveSheet; //激活当前sheet var sel = document.body.createTextRange(); sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中 sel.select(); //全选TextRange中内容 sel.execCommand("Copy"); //复制TextRange中内容 oSheet.Paste(); //粘贴到活动的EXCEL中 oXL.Visible = true; //设置excel可见属性 }</script> JS 取table 值得问题 C# 页面一行数据时变形了,多行的时候不会? c# 实现两窗体视频播放同步,画中画效果,控件共享,传递控件引用! Response.BufferOutput = false设置了但不起作用 C#程序安装后 登陆上去以后 点击水晶报表报以下错误 winform 如何上传文件到指定url,或者iis里面 c#串口操作怪问题? 有没有编程方法实现两个显示器不同显示内容的方法? 在datagrid中,我选中了一行,选择的时候想改变这一行的颜色改怎么做啊? 求助:字符串问题 求一个更新HTML里input的值的方法 c#里,如何实现同类属性的变量 放到一个结构体呢呀?
//加载Excel 读取sheet表单
public DataSet LoadDataSheetExcel(string filePath)
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
System.Data.DataTable OleDsExcle = OleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new[] { null, null, null, "Table" });
OleConn.Close();
DataSet ds = new DataSet();
ds.Tables.Add(OleDsExcle);
return ds;
}
//加载Excel 读取sheet表单数据
public DataSet LoadDataSheetExcel(string filePath, string SheetName)
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
String sql = "SELECT * FROM [" + SheetName + "$]";//可是更改Sheet名称,比如sheet2,等等
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
DataSet OleDsExcle = new DataSet();
OleDaExcel.Fill(OleDsExcle, SheetName);
OleConn.Close();
return filterDs(OleDsExcle); }
public bool SaveDataTableToExcel(System.Data.DataTable excelTable, string filePath)
{
Microsoft.Office.Interop.Excel.Application app =
new Microsoft.Office.Interop.Excel.ApplicationClass();
try
{
app.Visible = false;
Workbook wBook = app.Workbooks.Add(true);
Worksheet wSheet = wBook.Worksheets[1] as Worksheet;
if (excelTable.Rows.Count > 0)
{
int row = 0;
row = excelTable.Rows.Count;
int col = excelTable.Columns.Count;
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
string str = excelTable.Rows[i][j].ToString();
wSheet.Cells[i + 2, j + 1] = str;
}
}
} int size = excelTable.Columns.Count;
for (int i = 0; i < size; i++)
{
wSheet.Cells[1, 1 + i] = excelTable.Columns[i].ColumnName;
}
//设置禁止弹出保存和覆盖的询问提示框
app.DisplayAlerts = false;
app.AlertBeforeOverwriting = false;
//保存工作簿
wBook.Save();
//保存excel文件
app.Save(filePath);
app.SaveWorkspace(filePath);
app.Quit();
app = null;
return true;
}
catch (Exception err)
{
return false;
}
finally
{
}
} /// <summary>
/// 过滤无用数据
/// </summary>
private DataSet filterDs(DataSet ds)
{
ArrayList NullClums = new ArrayList();
for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
{
if (ds.Tables[0].Rows[0][i].ToString() == "")
{
NullClums.Add(ds.Tables[0].Columns[i]);
}
}
//过滤空列
foreach (DataColumn dc in NullClums)
{
ds.Tables[0].Columns.Remove(dc);
} ArrayList FullClums = new ArrayList();
for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
{
if (ds.Tables[0].Rows[0][i].ToString() != "")
{
FullClums.Add(ds.Tables[0].Rows[0][i].ToString());
}
}
System.Data.DataTable dt = fullDataDs(FullClums);
//过滤空行
ds.Tables[0].Rows.RemoveAt(0);
for (int i = 0; i < FullClums.Count; i++)
{
ds.Tables[0].Columns[i].ColumnName = FullClums[i].ToString();
} List<DataRow> removelist = new List<DataRow>();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
bool rowdataisnull = true;
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{ if (ds.Tables[0].Rows[i][j].ToString().Trim() != "")
{ rowdataisnull = false;
} }
if (rowdataisnull)
{
removelist.Add(ds.Tables[0].Rows[i]);
} }
for (int i = 0; i < removelist.Count; i++)
{
ds.Tables[0].Rows.Remove(removelist[i]);
} return ds;
} private System.Data.DataTable fullDataDs(ArrayList Cloums)
{
System.Data.DataTable dt = new System.Data.DataTable();
for (int i = 0; i < Cloums.Count; i++)
{
DataColumn dc = new DataColumn(Cloums[i].ToString());
dt.Columns.Add(dc);
} return dt;
} #endregion可以直接用
然后你的导出word 的模版是不是一样的~
方法都是不同的
http://kb.cnblogs.com/a/1274987/
function ExportExcel(tid) {
var curTbl = document.getElementById(tid);
var oXL = new ActiveXObject("Excel.Application"); //创建ActiveXObject对象excel
var oWB = oXL.Workbooks.Add(); //获取workbook对象
var oSheet = oWB.ActiveSheet; //激活当前sheet
var sel = document.body.createTextRange();
sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中
sel.select(); //全选TextRange中内容
sel.execCommand("Copy"); //复制TextRange中内容
oSheet.Paste(); //粘贴到活动的EXCEL中
oXL.Visible = true; //设置excel可见属性
}
</script>