如何将动态生成的Excel文件写入到数据库中

时间:2022-06-14 18:41:16
如题,代码如下:
    protected void CreateExcel()
    {
        Excel.Application oExcel;
        Excel.Workbook oBook;
        VBIDE.VBComponent oModule;
        Office.CommandBar oCommandBar;
        Office.CommandBarButton oCommandBarButton;
        String sCode;
        Object oMissing = System.Reflection.Missing.Value;
        oExcel = new Excel.Application();
        oBook = oExcel.Workbooks.Add(oMissing);
        oModule = oBook.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule);

        sCode =
           "sub VBAMacro()" +
            "   msgbox \"VBA Macro called\"\r\n" +
            "end sub";
        // Add the VBA macro to the new code module.
        oModule.CodeModule.AddFromString(sCode);
        //这块不知道如何将oExcel 对象转换为二进制。我是想将这个动态创建的对象以二进制格式写入到数据库中,请高手们指教,谢谢!

}

11 个解决方案

#1


看是什么数据库?

Oracle中有Blob/Clob字段,可以直接存

#2


是SQL|SERVER   ,Image类型

#3


怎样获取Excel对象的二进制内容?

#4


FileStream

#5


可以用代码描述吗?

#6


有没有高手啊?

#7


FileStream直接读excle文件,以二进制形式往数据库里写

#8


//读文件
FileStream FS= File.Open (FilePathName,FileMode.Open,FileAccess.ReadWrite,FileShare.ReadWrite);

byte []BUF=new byte [0x10000];

FS.Read (BUF,0,BUF.Length);
FS.Close ();
//插入数据
adapter.Fill(myDataSet,"myDataSet");

//插入新行
DataRow anyRow = myDataTable.NewRow();

anyRow[0] = BUF;

myDataTable.Rows.Add(anyRow);

#9


可能我描述的还不够详细,我是动态创建一个Excel文件,并动态的写入宏信息,如:
sCode =
           "sub VBAMacro()" +
            "   msgbox \"VBA Macro called\"\r\n" +
            "end sub";
        // Add the VBA macro to the new code module.
        oModule.CodeModule.AddFromString(sCode);
然后将动态创建的这个Excel文件,也就是Excel.Application oExcel中的oExcel对象转为二进制格式,并保存到数据库中。
  因为要动态的向Excel写入宏,所以才用程序来创建Excel文件,而并不是读取本地Excel文件。
  我现在不太清楚如何将动态创建的这个Excel文件转化为二进制数据,有没有什么方法?

#10


当然可以先将Excel保存到本地或服务端,然后再用下面的方式打开。
FileStream FS= File.Open (FilePathName,FileMode.Open,FileAccess.ReadWrite,FileShare.ReadWrite);
这样不是多一道手续么?能不能直接转换呢?

#11


到底这样有没有实现的可能?怎么没人回答

#1


看是什么数据库?

Oracle中有Blob/Clob字段,可以直接存

#2


是SQL|SERVER   ,Image类型

#3


怎样获取Excel对象的二进制内容?

#4


FileStream

#5


可以用代码描述吗?

#6


有没有高手啊?

#7


FileStream直接读excle文件,以二进制形式往数据库里写

#8


//读文件
FileStream FS= File.Open (FilePathName,FileMode.Open,FileAccess.ReadWrite,FileShare.ReadWrite);

byte []BUF=new byte [0x10000];

FS.Read (BUF,0,BUF.Length);
FS.Close ();
//插入数据
adapter.Fill(myDataSet,"myDataSet");

//插入新行
DataRow anyRow = myDataTable.NewRow();

anyRow[0] = BUF;

myDataTable.Rows.Add(anyRow);

#9


可能我描述的还不够详细,我是动态创建一个Excel文件,并动态的写入宏信息,如:
sCode =
           "sub VBAMacro()" +
            "   msgbox \"VBA Macro called\"\r\n" +
            "end sub";
        // Add the VBA macro to the new code module.
        oModule.CodeModule.AddFromString(sCode);
然后将动态创建的这个Excel文件,也就是Excel.Application oExcel中的oExcel对象转为二进制格式,并保存到数据库中。
  因为要动态的向Excel写入宏,所以才用程序来创建Excel文件,而并不是读取本地Excel文件。
  我现在不太清楚如何将动态创建的这个Excel文件转化为二进制数据,有没有什么方法?

#10


当然可以先将Excel保存到本地或服务端,然后再用下面的方式打开。
FileStream FS= File.Open (FilePathName,FileMode.Open,FileAccess.ReadWrite,FileShare.ReadWrite);
这样不是多一道手续么?能不能直接转换呢?

#11


到底这样有没有实现的可能?怎么没人回答