C# 开发 WIN CE程序

hilarysong 2009-05-16 01:13:20
DataSet 导出Excel

第一种方法

public void datatoEXCEL(DataSet myDataset, SqlCeCommand scc)
{
SqlCeDataAdapter scda = new SqlCeDataAdapter(scc);
myDataset.Clear();
scda.Fill(myDataset);
scda.Update(myDataset);
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Execl files (*.xls)|*.xls";

if (DialogResult.OK == saveFileDialog.ShowDialog())
{
string myStream;
myStream = saveFileDialog.FileName;
StreamWriter sw = new StreamWriter(myStream, false, System.Text.Encoding.Default);
string columnTitle = "";
try
{
//写入列标题
for (int i = 0; i < myDataset.Tables[0].Columns.Count; i++)
{
if (i > 0)
{
columnTitle += "\t";
}
columnTitle += myDataset.Tables[0].Columns[i].Caption;
}
sw.WriteLine(columnTitle);

//写入列内容
for (int j = 0; j < myDataset.Tables[0].Rows.Count; j++)
{
string columnValue = "";
for (int k = 0; k < myDataset.Tables[0].Columns.Count; k++)
{
if (k > 0)
{
columnValue += "\t";
}
columnValue += myDataset.Tables[0].Rows[j].ItemArray.GetValue(k);
}
sw.WriteLine(columnValue);
}
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
sw.Flush();
sw.Close();
}

}

}


...全文
313 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hilarysong 2009-05-16
  • 打赏
  • 举报
回复
快帮帮忙啊
hilarysong 2009-05-16
  • 打赏
  • 举报
回复
你的方法我知道 可是wince的不能导入excel的命名空间
hilarysong 2009-05-16
  • 打赏
  • 举报
回复
不一样的 winform可以导入microsoft的命名空间 wince的么有

WM5.0可以打开PC上创建的excel
zhensoft163 2009-05-16
  • 打赏
  • 举报
回复
从DataGridView中导出用的方法,你参考一下吧

/// <summary>
/// 导出DataGrid数据到Excel
/// </summary>
/// <param name="dgv">DataGridView</param>
/// <param name="caption">表标题</param>
public static void ExportDataGridToExcel(DataGridView dgv, string caption)
{
try
{
Excel.ApplicationClass Mylxls = new Excel.ApplicationClass();
Mylxls.Application.Workbooks.Add(true);
Mylxls.Caption = caption;
//在EXCEL第2行开始写入数据
int rowIndex = 2;
int row_cnt = dgv.Rows.Count;
int col_cnt = dgv.Columns.Count;

//遍历数据表中的所有列得到列头
string[] arr_caption = new string[dgv.Columns.Count];
int arrindex = 0;
foreach (DataGridViewColumn cs in dgv.Columns)
{
//Visible为False的不显示
if (cs.Visible == true)
{
arr_caption[arrindex] = cs.HeaderText;
arrindex++;
}

}

//逐行写入数据,表中第1行显示列标题
//创建表格的列头
for (int celindex = 0; celindex < col_cnt; celindex++)
{

Mylxls.Cells[1, celindex + 1] = arr_caption[celindex];
}
//这里要注意,由于DataGrid中总是要多显示一行,而最后一行中没有数据,所以在读取的时候不要读最后一行
for (int row = 0; row < row_cnt; row++)
{
for (int col = 0; col < col_cnt; col++)
{

try
{

if (dgv.Rows[row].Cells[col].Visible == true)
{
Range myrange = Mylxls.get_Range(Mylxls.Cells[rowIndex, col + 1], Mylxls.Cells[rowIndex, col + 1]);
myrange.NumberFormatLocal = "@";//文本格式
Mylxls.Cells[rowIndex, col + 1] = dgv.Rows[row].Cells[col].Value.ToString();
}
}
catch
{
return;
}
}
rowIndex++;
}
Mylxls.Visible = true;

}
catch
{
return;
}
}
zhensoft163 2009-05-16
  • 打赏
  • 举报
回复
不知道win ce和winform中的一样吗
hilarysong 2009-05-16
  • 打赏
  • 举报
回复
谁有好的能打开的源码 帮帮我 邮箱hilarysong@163.com
hilarysong 2009-05-16
  • 打赏
  • 举报
回复


第二种方法

public void datatoEXCEL(DataSet myDataset, SqlCeCommand scc)
{
SqlCeDataAdapter scda = new SqlCeDataAdapter(scc);
myDataset.Clear();
scda.Fill(myDataset);
scda.Update(myDataset);
SaveFileDialog saveFileDialog = new SaveFileDialog();
if (DialogResult.OK == saveFileDialog.ShowDialog())
{
try
{

int rows = myDataset.Tables[0].Rows.Count + 1;
int cols = myDataset.Tables[0].Columns.Count;

//将要生成的Excel文件
string ExcelFileName = saveFileDialog.FileName + "xls";
if (File.Exists(ExcelFileName))
{
File.Delete(ExcelFileName);
}
StreamWriter writer = new StreamWriter(ExcelFileName, false);
writer.WriteLine("<?mso-application progid='Excel.Sheet'?>");
writer.WriteLine("<Workbook xmlns='urn:schemas-microsoft-com:office:spreadsheet'");
writer.WriteLine(" xmlns:o='urn:schemas-microsoft-com:office:office'");
writer.WriteLine(" xmlns:x='urn:schemas-microsoft-com:office:excel'");
writer.WriteLine(" xmlns:ss='urn:schemas-microsoft-com:office:spreadsheet'");
writer.WriteLine(" xmlns:html='http://www.w3.org/TR/REC-html40/'>");
writer.WriteLine(" <DocumentProperties xmlns='urn:schemas-microsoft-com:office:office'>");
writer.WriteLine(" <Author>Automated Report Generator Example</Author>");
writer.WriteLine(string.Format(" <Created>{0}T{1}Z</Created>", DateTime.Now.ToString("yyyy-mm-dd"), DateTime.Now.ToString("HH:MM:SS")));
writer.WriteLine(" </DocumentProperties>");
writer.WriteLine(" <ExcelWorkbook xmlns='urn:schemas-microsoft-com:office:excel'>");
writer.WriteLine(" <WindowHeight>8955</WindowHeight>");
writer.WriteLine(" <WindowWidth>11355</WindowWidth>");
writer.WriteLine(" <WindowTopX>480</WindowTopX>");
writer.WriteLine(" <WindowTopY>15</WindowTopY>");
writer.WriteLine(" <ProtectStructure>False</ProtectStructure>");
writer.WriteLine(" <ProtectWindows>False</ProtectWindows>");
writer.WriteLine(" </ExcelWorkbook>");
writer.WriteLine(" <Styles>");
writer.WriteLine(" <Style ss:ID='Default' ss:Name='Normal'>");
writer.WriteLine(" <Alignment ss:Vertical='Bottom'/>");
writer.WriteLine(" <Borders/>");
writer.WriteLine(" <Font/>");
writer.WriteLine(" <Interior/>");
writer.WriteLine(" <Protection/>");
writer.WriteLine(" </Style>");
writer.WriteLine(" <Style ss:ID='s21'>");
writer.WriteLine(" <Alignment ss:Vertical='Bottom' ss:WrapText='1'/>");
writer.WriteLine(" </Style>");
writer.WriteLine(" </Styles>");
writer.WriteLine(" <Worksheet ss:Name='MyReport'>");
writer.WriteLine(string.Format(" <Table ss:ExpandedColumnCount='{0}' ss:ExpandedRowCount='{1}' x:FullColumns='1'", cols.ToString(), rows.ToString()));
writer.WriteLine(" x:FullRows='1'>");

//生成标题
writer.WriteLine("<Row>");
foreach (DataColumn eachCloumn in myDataset.Tables[0].Columns)
{
writer.Write("<Cell ss:StyleID='s21'><Data ss:Type='String'>");
writer.Write(eachCloumn.ColumnName.ToString());
writer.WriteLine("</Data></Cell>");
}
writer.WriteLine("</Row>");

//生成数据记录
foreach (DataRow eachRow in myDataset.Tables[0].Rows)
{
writer.WriteLine("<Row>");
for (int currentRow = 0; currentRow != cols; currentRow++)
{
writer.Write("<Cell ss:StyleID='s21'><Data ss:Type='String'>");
writer.Write(eachRow[currentRow].ToString());
writer.WriteLine("</Data></Cell>");
}
writer.WriteLine("</Row>");
}
writer.WriteLine(" </Table>");
writer.WriteLine(" <WorksheetOptions xmlns='urn:schemas-microsoft-com:office:excel'>");
writer.WriteLine(" <Selected/>");
writer.WriteLine(" <Panes>");
writer.WriteLine(" <Pane>");
writer.WriteLine(" <Number>3</Number>");
writer.WriteLine(" <ActiveRow>1</ActiveRow>");
writer.WriteLine(" </Pane>");
writer.WriteLine(" </Panes>");
writer.WriteLine(" <ProtectObjects>False</ProtectObjects>");
writer.WriteLine(" <ProtectScenarios>False</ProtectScenarios>");
writer.WriteLine(" </WorksheetOptions>");
writer.WriteLine(" </Worksheet>");
writer.WriteLine(" <Worksheet ss:Name='Sheet2'>");
writer.WriteLine(" <WorksheetOptions xmlns='urn:schemas-microsoft-com:office:excel'>");
writer.WriteLine(" <ProtectObjects>False</ProtectObjects>");
writer.WriteLine(" <ProtectScenarios>False</ProtectScenarios>");
writer.WriteLine(" </WorksheetOptions>");
writer.WriteLine(" </Worksheet>");
writer.WriteLine(" <Worksheet ss:Name='Sheet3'>");
writer.WriteLine(" <WorksheetOptions xmlns='urn:schemas-microsoft-com:office:excel'>");
writer.WriteLine(" <ProtectObjects>False</ProtectObjects>");
writer.WriteLine(" <ProtectScenarios>False</ProtectScenarios>");
writer.WriteLine(" </WorksheetOptions>");
writer.WriteLine(" </Worksheet>");
writer.WriteLine("</Workbook>");
writer.WriteLine();
writer.Close();
MessageBox.Show("The data output to " + saveFileDialog.FileName + "xls" + "", "", MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);

}
catch (Exception ex)
{

}
}
}


这两种方法导出后都不能在WM5.0下打开 提示的是格式不正确

谁能帮帮忙

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧