将数据库中读取的文件写入Excel文件

1.使用SaveDialog控件,选中要导入的文件,得到用户要导入的文件路径。

2.再打开Excel,得到对应的对象

            Variant Ex = Variant::CreateObject("Excel.Application");
            //file://设置Excel为不可见
            Ex.OlePropertySet("Visible",false);
             //file://打开指定的Excel报表文件。
            Ex.OlePropertyGet("WorkBooks").OleProcedure("Open",StrApp.c_str());
            Variant Wb = Ex.OlePropertyGet("ActiveWorkBook");
            Variant Sheet = Wb.OlePropertyGet("ActiveSheet");//获得当前默认的Sheet

3.得到Sheet之后就可以对表开始操作了。

           //合并单元格,从A1到C3

          Sheet.OlePropertyGet("Range","A1:C3").OleFunction("Merge" , false);

          //给单元格赋值

          Sheet.OlePropertyGet("Cells",1,1).OlePropertySet("Value","项目计划书");

          //通过数据集给表格赋值。循环数据集,得到每行数据

         for(CDS_GX->First(); !CDS_GX->Eof; CDS_GX->Next())
        {

            //将得到的对应表格中的单元格由AnsiString类型转换成为char数组。
            AAA=CDS_GX->FieldByName("Size")->AsString;
            Sheet.OlePropertyGet("Cells",3,4).OlePropertySet("Value",AAA.c_str());
        }   

//表中的文字都可以用字符串拼接,但是都需要转换成char的数组///

 

4.关闭Excel文件,并且将资源释放。

      Wb.OleProcedure("SaveAs",StrApp.c_str());//保存表格
      Wb.OleProcedure("Close");//关闭表格

      Ex.OleFunction("Quit");//退出Excel
      Ex = Unassigned;
      Wb = Unassigned;
      Sheet = Unassigned;

 


 

------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------

 if(SaveDialog1->Execute())
        {
            AnsiString StrApp=SaveDialog1->FileName;
             try
            {
           Variant Ex = Variant::CreateObject("Excel.Application");
            //file://设置Excel为不可见
            Ex.OlePropertySet("Visible",false);
            //file://打开指定的Excel报表文件。
        //Ex.OlePropertyGet("WorkBooks").OleProcedure("Create",StrApp.c_str());
        Ex.OlePropertyGet("WorkBooks").OleProcedure("Open",StrApp.c_str());
        //("Open",str_ExcelFileName,NULL,IfReadOnly);
        Variant Wb = Ex.OlePropertyGet("ActiveWorkBook");
        Variant Sheet = Wb.OlePropertyGet("ActiveSheet");//获得当前默认的Sheet
        //标题
        Sheet.OlePropertyGet("Range","A1:K1").OleFunction("Merge" , false);
        Sheet.OlePropertyGet("Cells",1,1).OlePropertySet("Value","项目计划书");

        Sheet.OlePropertyGet("Cells",2,1).OlePropertySet("Value","序号");
        Sheet.OlePropertyGet("Cells",2,2).OlePropertySet("Value","项目编号");
        Sheet.OlePropertyGet("Cells",2,3).OlePropertySet("Value","名称");
        Sheet.OlePropertyGet("Cells",2,4).OlePropertySet("Value","规格");
        Sheet.OlePropertyGet("Cells",2,5).OlePropertySet("Value","数量");
        Sheet.OlePropertyGet("Cells",2,6).OlePropertySet("Value","单位");
        Sheet.OlePropertyGet("Cells",2,7).OlePropertySet("Value","工序");
        Sheet.OlePropertyGet("Cells",2,8).OlePropertySet("Value","操作人");
        Sheet.OlePropertyGet("Cells",2,9).OlePropertySet("Value","工时(h)");
        Sheet.OlePropertyGet("Cells",2,10).OlePropertySet("Value","单价(元)");
        Sheet.OlePropertyGet("Cells",2,11).OlePropertySet("Value","完工时间");

        CDS_GX->CommandText="select ROW_NUMBER() OVER(ORDER BY a.[PreID] DESC) AS 'ID',b.ItemNo,b.ItemName,a.[Size],a.Number,a.Unit from dbo.t_PreMaterial as a right JOIN t_AppItem as b on a.ProductID=b.ProductID where b.ItemID="+IntToStr(CurItemID);
        pDBAgent->GetDataSet(CDS_GX->CommandText,CDS_GX);

        AnsiString  strItemNo="";
        AnsiString  strItemName="";
        AnsiString AAA="";
        for(CDS_GX->First(); !CDS_GX->Eof; CDS_GX->Next())
        {
            Sheet.OlePropertyGet("Cells",3,1).OlePropertySet("Value","1");
            AAA=CDS_GX->FieldByName("Size")->AsString;
            Sheet.OlePropertyGet("Cells",3,4).OlePropertySet("Value",AAA.c_str());
            AAA=CDS_GX->FieldByName("Number")->AsString;
            Sheet.OlePropertyGet("Cells",3,5).OlePropertySet("Value",AAA.c_str());
            AAA=CDS_GX->FieldByName("Unit")->AsString;
            Sheet.OlePropertyGet("Cells",3,6).OlePropertySet("Value",AAA.c_str());
            strItemNo=CDS_GX->FieldByName("ItemNo")->AsString;
            strItemName=CDS_GX->FieldByName("ItemName")->AsString;
        }
        CDS_GX->CommandText="select B.Spec,B.Number,B.Unit,E.UserName,D.ProcessName,B.TimeNum,B.UnitPrice,convert(varchar,B.EndTime,23) as EndTime from t_Plan AS A right JOIN t_Planentry as B On A.ID=B.PlanID left join t_ProProcess as C on A.ProProcessID=C.ProProcessID left join t_Process as D On C.ProcessID=D.ProcessID left join t_User as E ON B.UserID=E.UserID where A.ItemID="+IntToStr(CurItemID);
        pDBAgent->GetDataSet(CDS_GX->CommandText,CDS_GX);

        int i=0;
        for(CDS_GX->First(); !CDS_GX->Eof; CDS_GX->Next())
        {
            i++;
            Sheet.OlePropertyGet("Cells",3+i,1).OlePropertySet("Value",IntToStr(3+i).c_str());
            AAA=CDS_GX->FieldByName("Spec")->AsString;
            Sheet.OlePropertyGet("Cells",3+i,4).OlePropertySet("Value",AAA.c_str());
            AAA=CDS_GX->FieldByName("Number")->AsString;
            Sheet.OlePropertyGet("Cells",3+i,5).OlePropertySet("Value",AAA.c_str());
            AAA=CDS_GX->FieldByName("Unit")->AsString;
            Sheet.OlePropertyGet("Cells",3+i,6).OlePropertySet("Value",AAA.c_str());
            AAA=CDS_GX->FieldByName("ProcessName")->AsString;
            Sheet.OlePropertyGet("Cells",3+i,7).OlePropertySet("Value",AAA.c_str());
            AAA=CDS_GX->FieldByName("UserName")->AsString;
            Sheet.OlePropertyGet("Cells",3+i,8).OlePropertySet("Value",AAA.c_str());
            AAA=CDS_GX->FieldByName("TimeNum")->AsString;
            Sheet.OlePropertyGet("Cells",3+i,9).OlePropertySet("Value",AAA.c_str());
            AAA=CDS_GX->FieldByName("UnitPrice")->AsString;
            Sheet.OlePropertyGet("Cells",3+i,10).OlePropertySet("Value",AAA.c_str());
            AAA=CDS_GX->FieldByName("EndTime")->AsString;
            Sheet.OlePropertyGet("Cells",3+i,11).OlePropertySet("Value",AAA.c_str());
        }
        AAA="B3:B"+IntToStr(3+i);
        Sheet.OlePropertyGet("Range",AAA.c_str()).OleFunction("Merge" , false);
        Sheet.OlePropertyGet("Cells",3,2).OlePropertySet("Value",strItemNo.c_str());
        AAA="C3:C"+IntToStr(3+i);
        Sheet.OlePropertyGet("Range",AAA.c_str()).OleFunction("Merge" , false);
        Sheet.OlePropertyGet("Cells",3,3).OlePropertySet("Value",strItemName.c_str());


      Wb.OleProcedure("SaveAs",StrApp.c_str());//保存表格
      Wb.OleProcedure("Close");//关闭表格

      Ex.OleFunction("Quit");//退出Excel
      Ex = Unassigned;
      Wb = Unassigned;
      Sheet = Unassigned;
      }
            catch(...)
            {
                ShowMsg("启动Excel出错,可能由于Excel没有正确安装!");
                return;
            }
      }

AnsiString __fastcall TScheduleFrame::ReturnChar(char c,int n)
{
 const char end = 'Z';

 int _span = end - c;     //距离最后一个字母Z的距离

 int _buffer = (_span==0) ? 1 : n / _span;   //前缀 _buffer个A

 int _last = n - _buffer * _span;  //最后一个字母
 
 char *_return = new char[_buffer + 2];
 for(int i=0;i<_buffer;i++)
  _return[i]='A';
 _return[_buffer]=(char)(_last+64);
 _return[_buffer+1]='/0';
 return (AnsiString)_return;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将PythonExcel文件数据写入数据库,可以按照以下步骤进行操作: 1. 首先,使用xlrd库来读取Excel文件的数据。可以使用open_workbook函数打开Excel文件,然后使用sheet_by_index函数获取指定索引的工作表。可以使用nrows属性获取总行数,然后使用循环遍历每一行的数据,并将其保存到一个列表。 2. 接下来,使用pandas库的DataFrame对象来导出数据。可以使用read_excel函数读取Excel文件,并将其转换为DataFrame对象。然后,可以使用to_sql函数将DataFrame对象的数据写入数据库。 下面是一个示例代码,演示了如何将Excel文件的数据写入数据库: ```python import pandas as pd import xlrd import pymysql # 读取Excel文件 FilePath = 'E:/PDBC/StudentInfo.xls' wkb = xlrd.open_workbook(FilePath) sheet = wkb.sheet_by_index(0) rows_number = sheet.nrows # 将Excel数据保存到列表 data = [] for i in range(rows_number): x = sheet.row_values(i) data.append(x) # 将数据转换为DataFrame对象 df = pd.DataFrame(data) # 连接数据库 conn = pymysql.connect(host='localhost', user='root', password='password', db='database_name') # 将DataFrame数据写入数据库表 df.to_sql('table_name', conn, if_exists='replace', index=False) # 关闭数据库连接 conn.close() ``` 请注意,上述代码的`localhost`、`root`、`password`和`database_name`需要根据实际情况进行替换,以便连接到正确的数据库。同时,`table_name`也需要替换为要写入数据的目标表的名称。 希望这个示例能帮助到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值