500分求将word、powerpoint和Excel文件转成txt文件的程序源码或者程序库!如果好用,立即给分!帮推的也有分!

解决方案 »

  1.   

    我做过读取excel的函数,你自己看看有没有帮助
    /**********************************************************************
    作者:梁文林
    时间:
    功能:
    访问excel函数,
    需要注意的问题:
    调用之前必须启动com环境(如AfxOleInit(),::CoInitialize(NULL))输出函数:
    1、NewExcel(name) 创建新的excel文件,name为创建的文件名
    2、OpenExcel(name) 打开已有的excel文件,name为打开的文件名
    3、SetSheetName(nSheet,name) 设置第nSheet页的name
    4、ClearSheet(nSheet) 清空第nSheet页的内容
    5、SetSheetNum(nNum) 设置Sheet页的数目
    6、SetExcelVisible(bVisible) 设置当前Excel是否可见
    7、SetCellValue(cell,value) 设置第cell格的内容
    8、SetCellValue(cell1,cell2,value) 设置第cell1到cell2之间的内容
    9、SetSheet(nNum) 设置当前的Sheet页
    10、CloseExcel 关闭当前的excel
    **********************************************************************/// LwlExcel.cpp: implementation of the CLwlExcel class.
    //
    //////////////////////////////////////////////////////////////////////#include "stdafx.h"
    #include "LwlExcel.h"//////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////CLwlExcel::CLwlExcel()
    {
    // ::CoInitialize(NULL);
    }CLwlExcel::~CLwlExcel()
    {
    // ::CoUninitialize();
    }void CLwlExcel::NewExcel(LPCTSTR lpctName)
    {
    Workbooks books;
    COleVariant FileName(lpctName, VT_BSTR);
    COleVariant fileformat((short)1);
    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

    if(!m_app)
    LoadApp(); if(!m_app)
    return; if(m_app){
    books = m_app.GetWorkbooks();  // Get an IDispatch pointer
    }

    if(books)
    m_book = books.Add(covOptional); if(m_book){
    m_book.SaveAs(FileName,fileformat,covOptional,
    covOptional,covOptional,
    covOptional,1,covOptional,
    covOptional,covOptional,covOptional);
    }
    books.ReleaseDispatch();
    }void CLwlExcel::OpenExcel(LPCTSTR lpctName)
    {
    Workbooks books;
    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); if(!m_app)
    LoadApp(); if(!m_app)
    return; // Get Workbooks collection.
    books = m_app.GetWorkbooks();  // Get an IDispatch pointer
    if(!books)
    return; m_book = books.Open(lpctName,
    covOptional, covOptional, covOptional, covOptional,
    covOptional, covOptional, covOptional, covOptional,
    covOptional, covOptional, covOptional, covOptional
    );
    books.ReleaseDispatch();
    }void CLwlExcel::SetSheetName(int nSheet, LPCTSTR lpstName)
    {
    _Worksheet sheet; if(!GetSheet(nSheet,sheet))
    return; sheet.SetName(lpstName);
    sheet.ReleaseDispatch();
    }void CLwlExcel::LoadApp()
    {
    m_app.CreateDispatch("Excel.Application");
    }void CLwlExcel::UnloadApp()
    {
    try{
    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    if(m_app){
    if(m_book){
    m_book.Save();
    m_book.SetSaved(TRUE);
    m_book.Close(covOptional,covOptional,covOptional);
    m_book.ReleaseDispatch();
    }
    if(m_sheet)
    m_sheet.ReleaseDispatch();

    m_app.Quit();
    m_app.ReleaseDispatch();
    // m_app.Quit();
    }
    }
    catch(...){
    }
    }void CLwlExcel::ClearSheet(int nSheet)
    {
    _Worksheet sheet;
    Range range; if(!GetSheet(nSheet,sheet))
    return; range = sheet.GetRange(COleVariant("A1"), COleVariant("W40"));
    if(!range){
    sheet.ReleaseDispatch();
    return;
    } range.Clear(); 
    range.ReleaseDispatch();
    sheet.ReleaseDispatch();
    }void CLwlExcel::SetSheetNum(int nNum)
    {
    if(nNum<=0){
    TRACE("sheet小于等于0");
    return;
    } if(m_app)
    m_app.SetSheetsInNewWorkbook(nNum);
    }void CLwlExcel::SetExcelVisible(BOOL bVisible)
    {
    if(m_app)
    m_app.SetVisible(bVisible);
    }void CLwlExcel::SetCellValue(LPCTSTR lpctRange, LPCTSTR lpctValue)
    {
    if(!m_sheet)
    return;

    COleVariant Cell1(lpctRange);
    COleVariant CellValue(lpctValue);
    Range range = m_sheet.GetRange(Cell1,Cell1);
    if(!range)
    return; range.SetValue(CellValue); 
    range.ReleaseDispatch();
    }void CLwlExcel::SetCellValue(LPCTSTR cell1, LPCTSTR cell2, LPCTSTR lpctValue)
    {
    if(!m_sheet)
    return;

    COleVariant Cell1(cell1);
    COleVariant Cell2(cell2);
    COleVariant CellValue(lpctValue);
    Range range = m_sheet.GetRange(Cell1,Cell2);
    if(!range)
    return; range.SetValue(CellValue); 
    range.ReleaseDispatch();
    }void CLwlExcel::SetSheet(int nSheet)
    {
    GetSheet(nSheet,m_sheet);
    }BOOL CLwlExcel::GetSheet(int nSheet, _Worksheet &sheet)
    {
    BOOL bRet=TRUE; Worksheets sheets; if(m_book){
    sheets= m_book.GetSheets();
    if(!sheets)
    bRet = FALSE;
    else{
    int nCount = sheets.GetCount();
    if(nSheet>nCount)
    bRet = FALSE;
    else{
    sheet = sheets.GetItem( COleVariant((short)(nSheet)) );
    if(!sheet)
    bRet = FALSE;
    }
    }
    }
    else
    bRet = FALSE; if(sheets)
    sheets.ReleaseDispatch(); return bRet;
    }void CLwlExcel::CloseExcel()
    {
    UnloadApp();
    }/*******************************************************
    合并cell
    /*******************************************************/
    void CLwlExcel::MergeCell(LPCTSTR strCell1, LPCTSTR strCell2)
    {
    try{
    if(!m_sheet)
    return;

    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    COleVariant cell1(strCell1);
    COleVariant cell2(strCell2);
    Range range = m_sheet.GetRange(cell1,cell2);
    if(!range)
    return;

    range.Merge(covOptional);
    range.ReleaseDispatch(); }
    catch(...){
    }
    }void CLwlExcel::UnMergeCell(LPCTSTR strCell1, LPCTSTR strCell2)
    {
    try{
    if(!m_sheet)
    return;

    COleVariant cell1(strCell1);
    COleVariant cell2(strCell2);
    Range range = m_sheet.GetRange(cell1,cell2);
    if(!range)
    return;

    range.UnMerge();

    range.ReleaseDispatch();
    }
    catch(...){
    }}void CLwlExcel::AddLine(double x1, double y1, double x2, double y2)
    {
    try{
    if(!m_sheet)
    return; COleVariant Start((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    COleVariant End((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    COleVariant By((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    COleVariant Periods((long)DISP_E_PARAMNOTFOUND, VT_ERROR); Shapes shapes;
    Shape shape;
    Lines lines;
    Line line;
    shapes = m_sheet.GetShapes();
    if(!shapes)
    return;
    int nShape = shapes.GetCount(); line = shapes.AddLine(x1,y1,x2,y2);
    if(line){
    line.SetWidth(10);
    } nShape = shapes.GetCount();

    shapes.ReleaseDispatch();
    shape.ReleaseDispatch();
    }
    catch(...){
    }
    }
      

  2.   

    由于程序可能需要移植到Unix下,所以最好不用COM。不过还是谢谢你