.net 水晶报表。现在已经有DataSet数据源了,现在想要把DataSet导成xls文件。

我现在做一个控制台应用程序,现在已经有DataSet数据源了(DataSet里的数据是丛Excel文件中读取出来的),现在想要把DataSet导成xls文件。xls文件最... 我现在做一个控制台应用程序,现在已经有DataSet数据源了(DataSet里的数据是丛Excel文件中读取出来的),现在想要把DataSet导成xls文件。xls文件最好能是xml结构的,不是也没关系,最主要的是把DataSet数据源生成一个水晶报表,然后导出成Excel(xls)文件。
希望有详细的代码解释,我已经查了一天的资料了,项目都没进展,急死人了,希望大家能帮助我,谢谢大家。
我是要把一DataTable里的数据绘制成《线状统计图》,然后再导出到Excel文件里,现在就是不知道这个表怎么绘制.
我的横坐标是一个日期类型的日期
纵坐标是0~1000的数据
我设置的是on change of 为dataTime
show value(s) 为 一个int 类型的值。
现在不明白的是这个图怎么绘制,我的字段导出到EXCEL文件里都有值,但绘制成图表的时候值全是1了。图表是错的。
展开
 我来答
百度网友317a54a
2011-04-02
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
你现在是要把报表导出吗?还是把DataSet导出?
报表导出的话。
saveFileDialog1.Filter = "Execl2003 files (*.xls)|*.xls|Word2003 files (*.doc)|*.doc|Execl2007 files (*.xlsx)|*.xlsx|Word2007 files (*.docx)|*.docx|PDF files (*.pdf)|*.pdf";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.RestoreDirectory = true;
saveFileDialog1.CreatePrompt = true;
saveFileDialog1.Title = "Export files to...";
DateTime now = DateTime.Now;
saveFileDialog1.FileName = now.Year.ToString().PadLeft(2) + now.Month.ToString().PadLeft(2, '0') + now.Day.ToString().PadLeft(2, '0') + "-" + now.Hour.ToString().PadLeft(2, '0') + now.Minute.ToString().PadLeft(2, '0') + now.Second.ToString().PadLeft(2, '0');
saveFileDialog1.ShowDialog();

if (saveFileDialog1.FileName != "")
{
#region 导出为2003版本的Excel或Word
if (saveFileDialog1.FilterIndex == 1 || saveFileDialog1.FilterIndex == 2)
{
Stream myStream;
myStream = saveFileDialog1.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
string str = "";
try
{
//写标题
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
if (i > 0)
{
str += "\t";
}
str += dataGridView1.Columns[i].HeaderText;
}
sw.WriteLine(str);
//写内容
for (int j = 0; j < dataGridView1.Rows.Count - 1; j++)
{
string tempStr = "";
for (int k = 0; k < dataGridView1.Columns.Count - 1; k++)
{
if (k > 0)
{
tempStr += "\t";
}
tempStr += dataGridView1.Rows[j].Cells[k].Value.ToString();
}
sw.WriteLine(tempStr);
}
sw.Close();
myStream.Close();
MessageBox.Show("文件已导出成功");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
#endregion
#region 导出为2007版本的Excel
else if (saveFileDialog1.FilterIndex == 3)
{
Microsoft.Office.Interop.Excel.ApplicationClass MyExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
MyExcel.Visible = true;
if (MyExcel == null)
{
MessageBox.Show("EXCEL无法启动!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
int rowcount = 0;
int columncount = 0;
MyExcel.Application.Workbooks.Add(true);
columncount = this.dataGridView1.ColumnCount - 1;
rowcount = this.dataGridView1.RowCount - 1;
for (int m = 0; m < columncount; m++)
{
MyExcel.Cells[1, m + 1] = this.dataGridView1.Columns[m].HeaderText;
}
for (int i = 0; i < rowcount; i++)
{
for (int j = 0; j < columncount; j++)
{
MyExcel.Cells[i + 2, j + 1] = this.dataGridView1[j, i].Value.ToString();
}
}
}
#endregion
#region 导出为2007版本的Word
else if (saveFileDialog1.FilterIndex == 4)
{
Stream myStream;
myStream = saveFileDialog1.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
string str = "";
try
{
//写标题
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
if (i > 0)
{
str += "\t";
}
str += dataGridView1.Columns[i].HeaderText;
}
sw.WriteLine(str);
//写内容
for (int j = 0; j < dataGridView1.Rows.Count - 1; j++)
{
string tempStr = "";
for (int k = 0; k < dataGridView1.Columns.Count - 1; k++)
{
if (k > 0)
{
tempStr += "\t";
}
tempStr += dataGridView1.Rows[j].Cells[k].Value.ToString();
}
sw.WriteLine(tempStr);
}
sw.Close();
myStream.Close();
MessageBox.Show("文件已导出成功");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
#endregion
#region 导出为PDF
else if (saveFileDialog1.FilterIndex == 5)
{
//设置导出字体
string FontPath = "C:\\WINDOWS\\Fonts\\simsun.ttc,1";
int FontSize = 12;

Boolean cc = false;
string strFileName;

strFileName = saveFileDialog1.FileName;

//初始化一个目标文档类
//Document document = new Document();
//竖排模式,大小为A4,四周边距均为25
iTextSharp.text.Document document = new iTextSharp.text.Document(PageSize.A4, 25, 25, 25, 25);
//横排模式,大小为A4,四周边距均为50
//Document doc = new Document(PageSize.A4.rotate(),50,50,50,50);

//调用PDF的写入方法流
//注意FileMode-Create表示如果目标文件不存在,则创建,如果已存在,则覆盖。
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(strFileName, FileMode.Create));

//创建PDF文档中的字体
BaseFont baseFont = BaseFont.CreateFont(
FontPath,
BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);

//根据字体路径和字体大小属性创建字体
iTextSharp.text.Font font = new iTextSharp.text.Font(baseFont, FontSize);

//打开目标文档对象
document.Open();

//根据数据表内容创建一个PDF格式的表
PdfPTable table = new PdfPTable(dataGridView1.Columns.Count - 1);

for (int j = 0; j < dataGridView1.ColumnCount - 1; j++)
{
table.AddCell(new Phrase(dataGridView1.Columns[j].HeaderText, font));
}
//// 告诉程序这行是表头,这样页数大于1时程序会自动为你加上表头。
table.HeaderRows = 1;

//添加数据
//设置表体背景色
//遍历原gridview的数据行
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count - 1; j++)
{
try
{
table.AddCell(new Phrase(dataGridView1[j, i].Value.ToString(), font));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
cc = true;
}
}
}
//在目标文档中添加转化后的表数据
document.Add(table);
//关闭目标文件
document.Close();
//关闭写入流
writer.Close();
// Dialog
if (!cc)
{
MessageBox.Show("文件已导出成功!", "生成成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
#endregion
}
else
{
MessageBox.Show("文件名不能为空!");
}
别忘记了上面

using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Word;
要是是dataset 导出的话。
INSERT INTO OPENDATASOURCE('MICROSOFT.JET.OLEDB.4.0',

'Excel 5.0;DATABASE=c:\03-20.xls' )...[Sheet1$]
SELECT * FROM [1120].[dbo].[zwh_House_WEBDB] where
datediff(d,getOn,getdate())=0
追问
这个程序是运行在服务器上的,不可以使用OFFICE的插件。
我是要把一DataTable里的数据绘制成《线状统计图》,然后再导出到Excel文件里,现在就是不知道这个表怎么绘制.
我的横坐标是一个日期类型的日期
纵坐标是0~1000的数据
我设置的是on change of 为dataTime
show value(s) 为 一个int 类型的值。
现在不明白的是这个图怎么绘制,我的字段导出到EXCEL文件里都有值,但绘制成图表的时候值全是1了。图表是错的。
解忧解忧杂货铺
2011-03-30 · TA获得超过590个赞
知道小有建树答主
回答量:1536
采纳率:33%
帮助的人:693万
展开全部
用MSchart 控件绑定你的dataset。。然后会生成一张图片,找到这个路径 然后导出到xls 。不行吗
追问
你好,朋友,我用的是控制台应用程序,不可以用控件的。能再帮我分析一下吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式