C# 需要将Excel文件值作为BLOB数据类型存储在SQL DB中,并作为XML检索
我需要将Excel文件值作为BLOB数据类型存储到SQL数据库 我的EXCEL文件包含以下值SCENSUSDATA.xls: 我的数据库表设计TestBlob: 用于文件上载的我的ASP页面代码: 如果运行此代码,数据库表中将显示以下结果: 现在,我尝试使用以下查询将blobValue转换为XML: 我收到以下错误:C# 需要将Excel文件值作为BLOB数据类型存储在SQL DB中,并作为XML检索,c#,asp.net,xml-parsing,blob,C#,Asp.net,Xml Parsing,Blob,我需要将Excel文件值作为BLOB数据类型存储到SQL数据库 我的EXCEL文件包含以下值SCENSUSDATA.xls: 我的数据库表设计TestBlob: 用于文件上载的我的ASP页面代码: 如果运行此代码,数据库表中将显示以下结果: 现在,我尝试使用以下查询将blobValue转换为XML: 我收到以下错误: 我需要知道我的代码是否正确 是否尝试将excel文件另存为。xlsxls不是xml派生格式,无法转换directly@oleksii我尝试转换xls->BLOB->xml@Mikh
我需要知道我的代码是否正确 是否尝试将excel文件另存为。xlsxls不是xml派生格式,无法转换directly@oleksii我尝试转换xls->BLOB->xml@MikhailTimofeev我将.xls更改为.xlsx,但出现了相同的错误occur@Guru如果不深入了解xls格式的内部细节,这是不可能的。它是微软专有的封闭源代码二进制格式。您不能简单地将其转换为字节并将字节作为xml读取。使用xlsx格式可能会更幸运,因为它是开源的。我认为它是基于xml和gzip或zip压缩的。在记事本中打开xlsx格式-如果您可以看到它是xml,那么您的转换应该可以工作,但我怀疑您需要先解压缩它。
Name Age
A 20
B 25
C 30
BlobValues VARBINARY(MAX)
protected void btn1_click(object sender, EventArgs e)
{
if (fileupload.HasFile)
{
int filelength = myfile.ContentLength;
byte[] mydata = new byte[filelength];
myfile.InputStream.Read(mydata, 0, filelength);
using (SqlConnection sqlconnection = new SqlConnection(@"Data Source=xxx.xxx.x.xxx;User Id=sa;Password=root;Initial Catalog=SampleDB; Integrated Security=SSPI;"))
{
sqlconnection.Open();
string insertxmlquery = @"INSERT INTO TestBlob ([ByteValues]) VALUES (@BinData)";
SqlCommand Insertcommand = new SqlCommand(insertxmlquery, sqlconnection);
SqlParameter sqlparam = Insertcommand.Parameters.AddWithValue("@BinData", mydata);
sqlparam.DbType = System.Data.DbType.Binary;
Insertcommand.ExecuteNonQuery();
}
}
else
{
lbl.Text = "Choose your file";
}
}
BlobValues
0xD0CF11E0A1B11AE1000000000000000000000000000000003E000300FEFF09000600000000....largeCode
ALTER TABLE TestBlob
ADD MYXML AS CAST(CAST(Blobvalues AS VARCHAR(MAX)) AS XML)
Msg 9420, Level 16, State 1, Line 1
XML parsing: line 1, character 3, illegal xml character