C#实现 SQL数据库导出到EXCEL
staticvoidMain(string[]args){SqlConnectionmyConnection=newSqlConnection(@"server=192....
static void Main(string[] args)
{
SqlConnection myConnection = new SqlConnection(@"server=192.168.1.239;uid=sa;pwd=yxaf123;database=Northwind;");
myConnection.Open();
SqlCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = " ";
myCommand = new SqlCommand(myCommand.CommandText, myConnection);
try
{
myCommand.ExecuteNonQuery();
myCommand.CommandText = "EXEC master..XP_cmdshell 'bcp Northwind.dbo.myTabe out \"c:\test.xls\" /c -/S\"192.168.1.239:1433\" /U\"sa\"-p\"yxaf123\"' ";
Console.WriteLine("导出成功");
}
catch (SqlException err)
{
Console.WriteLine(err.Message.ToString());
}
我就是想把myTabe表里的内容导出到excel中
能运行 但是C目录下没有文件生成 问题出在哪?解决了追加分数 展开
{
SqlConnection myConnection = new SqlConnection(@"server=192.168.1.239;uid=sa;pwd=yxaf123;database=Northwind;");
myConnection.Open();
SqlCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = " ";
myCommand = new SqlCommand(myCommand.CommandText, myConnection);
try
{
myCommand.ExecuteNonQuery();
myCommand.CommandText = "EXEC master..XP_cmdshell 'bcp Northwind.dbo.myTabe out \"c:\test.xls\" /c -/S\"192.168.1.239:1433\" /U\"sa\"-p\"yxaf123\"' ";
Console.WriteLine("导出成功");
}
catch (SqlException err)
{
Console.WriteLine(err.Message.ToString());
}
我就是想把myTabe表里的内容导出到excel中
能运行 但是C目录下没有文件生成 问题出在哪?解决了追加分数 展开
展开全部
我这是asp.net ,你对照改一下吧
--------------------------------------------------------
public void CreateExcel(DataSet ds, string typeid, string FileName)
{
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
string colHeaders = "", ls_item = "";
int i = 0;
//定义表对象与行对像,同时用DataSet对其值进行初始化
DataTable dt = ds.Tables[0];
DataRow[] myRow = dt.Select("");
// typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件
if (typeid == "1")
{
//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
for (i = 0; i < dt.Columns.Count - 1; i++)
colHeaders += dt.Columns[i].Caption.ToString() + "\t";
colHeaders += dt.Columns[i].Caption.ToString() + "\n";
//向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);
//逐行处理数据
foreach (DataRow row in myRow)
{
//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
for (i = 0; i < row.ItemArray.Length - 1; i++)
{
string val = row[i].ToString().Trim().Replace("\n", "");
val = val.Replace("\r", "");//row[i].ToString().Trim()
ls_item += val + "\t";
}
ls_item += row[i].ToString() + "\n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item = "";
}
}
else
{
if (typeid == "2")
{
//从DataSet中直接导出XML数据并且写到HTTP输出流中
resp.Write(ds.GetXml());
}
}
//写缓冲区中的数据到HTTP头文件中
resp.End();
}
--------------------------------------------------------
public void CreateExcel(DataSet ds, string typeid, string FileName)
{
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
string colHeaders = "", ls_item = "";
int i = 0;
//定义表对象与行对像,同时用DataSet对其值进行初始化
DataTable dt = ds.Tables[0];
DataRow[] myRow = dt.Select("");
// typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件
if (typeid == "1")
{
//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
for (i = 0; i < dt.Columns.Count - 1; i++)
colHeaders += dt.Columns[i].Caption.ToString() + "\t";
colHeaders += dt.Columns[i].Caption.ToString() + "\n";
//向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);
//逐行处理数据
foreach (DataRow row in myRow)
{
//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
for (i = 0; i < row.ItemArray.Length - 1; i++)
{
string val = row[i].ToString().Trim().Replace("\n", "");
val = val.Replace("\r", "");//row[i].ToString().Trim()
ls_item += val + "\t";
}
ls_item += row[i].ToString() + "\n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item = "";
}
}
else
{
if (typeid == "2")
{
//从DataSet中直接导出XML数据并且写到HTTP输出流中
resp.Write(ds.GetXml());
}
}
//写缓冲区中的数据到HTTP头文件中
resp.End();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很明显的,'bcp Northwind.dbo.myTabe out \"c:\test.xls\" /c -/S\"192.168.1.239:1433\" /U\"sa\"-p\"yxaf123\"',这个错误有多处,最好在命令提示符里调试一下再改成C#的格式。
bcp Northwind.dbo.????? out c:\test.xls /c /S [服务器名] /U ?? /P ??????
此句在我机器上命令提示符里能通过,能生成test.xls 。
bcp Northwind.dbo.????? out c:\test.xls /c /S [服务器名] /U ?? /P ??????
此句在我机器上命令提示符里能通过,能生成test.xls 。
追问
能具体指正一下哪错了吗,冒号之类的问题还是语句的?
追答
冒号应该没问题,不过文件名、服务器名、用户名、密码那的引号可以不要的。
第一处:-/S “-”和“/”只要一个的,最好跟别的参数用的一致,统一用“-”或“/”;
第二处:192.168.1.239:1433 这个填服务器名或者直接填服务器IP地址,端口号就不用了;
其它的:估计有多处少空格。
你把
bcp Northwind.dbo.myTabe out c:\test.xls /c /S 192.168.1.239 /U sa /p yxaf123
在你的“命令提示符”里或者“运行”里运行下试试看能生成不
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |