【发布时间】:2020-08-09 05:13:02
【问题描述】:
我正在尝试使用 XML 将数据从 datagridview 导出到 excel 文件。下面是我写的代码
Dim fs As New IO.StreamWriter(FileName, False)
With fs
.WriteLine("<?xml version=""1.0""?>")
.WriteLine("<?mso-application progid=""Excel.Sheet""?>")
.WriteLine("<ss:Workbook xmlns=""urn:schemas-microsoft-com:office:spreadsheet"">")
.WriteLine(" <ss:Styles>")
.WriteLine(" <ss:Style ss:ID=""1"">")
.WriteLine(" <ss:Font ss:Bold=""1""/>")
.WriteLine(" <ss:/Style>")
.WriteLine(" <ss:Worksheet ss:Name=""WCRPaymentLog"">")
.WriteLine(" <ss:Table>")
For x As Integer = 0 To dgReport.Columns.Count - 1
.WriteLine(" <ss:Column ss:Width=""{0}""/>", dgReport.Columns.Item(x).Width)
Next
.WriteLine(" <ss:Row ss:StyleID=""1"">")
For x As Integer = 0 To dgReport.Columns.Count - 1
.WriteLine(" <ss:Cell>")
.WriteLine(String.Format(" <ss:Data ss:Type=""String"">{0}</ss:Data>", dgReport.Columns.Item(x).HeaderText.Trim))
.WriteLine(" </ss:Cell>")
Next
.WriteLine(" </ss:Row>")
For intRow As Integer = 0 To dgReport.RowCount - 2
.WriteLine(String.Format(" <ss:Row ss:Height=""{0}"">", dgReport.Rows(intRow).Height))
For intCol As Integer = 0 To dgReport.Columns.Count - 1
.WriteLine(" <ss:Cell>")
.WriteLine(String.Format(" <ss:Data ss:Type=""String"">{0}</ss:Data>", dgReport.Item(intCol, intRow).Value.ToString.Trim))
.WriteLine(" </ss:Cell>")
Next
.WriteLine(" </ss:Row>")
Next
.WriteLine(" </ss:Table>")
.WriteLine(" </ss:Worksheet>")
.WriteLine("</ss:Workbook>")
.Close()
End With
当我尝试运行此代码时,它可以正常执行,但是在打开生成的文件时,它会给出错误:Strict Parse Error。
错误日志生成如下: XML 解析错误:未定义的命名空间 在此元素堆栈或其下方发生错误: (堆栈为空——在顶级元素或顶级元素以下发生错误。)
如果我犯了错误,谁能帮帮我。
如果文件存在,我也想这样编码,然后它将在代码中添加一个新工作表并在该工作表中写入表格。谁能帮我知道怎么做,因为这段代码会覆盖现有文件。
【问题讨论】:
标签: excel xml vb.net datagridview