Red de conocimiento informático - Material del sitio web - ¿Cómo utilizar el lenguaje C para leer datos de archivos de Excel?

¿Cómo utilizar el lenguaje C para leer datos de archivos de Excel?

La idea básica

La implementación básica es la misma que la del artículo anterior "Leer y escribir archivos de tablas de Excel directamente a través de ODBC". Todos usan ODBC para tratar los archivos de tablas de Excel como archivos de base de datos para lectura, escritura y otros. operaciones, por lo que el nombre del archivo de encabezado escrito en el archivo de tabla de Excel debe ser único (no tienen el mismo nombre, es equivalente al valor de ID de la base de datos). Este artículo encapsula las operaciones de archivos de Excel en una clase CSpreadSheet. A través de esta clase, podemos implementar de manera muy conveniente varias operaciones en los datos de la tabla de Excel y podemos extender esta clase para satisfacer nuestras propias necesidades.

Implementación específica

1. Incluir archivos de encabezado de operación de archivos de Excel

#include "CSpreadSheet.h"

2. Crear un nuevo Archivo de Excel y escritura de datos predeterminados

//Cree un nuevo nombre y ruta de archivo de Excel, TestSheet es el nombre de la tabla interna

CSpreadSheet.

CSpreadSheet SS("c:\\Test.xls", "TestSheet");

StringArray sampleArray, testRow;

SS.

AddHeaders(sampleArray);

// Agregar datos

CString strName[] = {"Xu Jingzhou", "Xu Zhihui", "Guo Hui", "Niu Yingjun", " Zhu Xiaopeng" };

CString strAge[] = {"27", "23", "28", "27", "26"};

for(int i = 0; i lt; tamaño de (strName)/tamaño de (CString); i )

{

sampleArray.RemoveAll();

sampleArray.Add( strName[i ]);

sampleArray.Add(strAge[i]);

SS.AddRow(sampleArray); p>SS .Commit();

III. Leer datos del archivo Excel

CSpreadSheet SS("c:\\Test.xls", "TestSheet");

CStringArray Filas, Columna;

//Vaciar el cuadro de lista

m_AccessList.ResetContent();

for (int i = 1; i lt; = SS .GetTotalRows(); i )

{

// Leer una fila

SS.ReadRow(Rows, i);

CString strContents = ""

for (int j = 1; j lt; = Rows.GetSize(); j )

{

if (j == 1)

strContents = Rows.GetAt(j-1);

else

strContents = strContents " --gt; " Filas. GetAt(j-1);

}

m_AccessList.AddString(strContents);

}

IV.AddRow( testRow, 2); //Inserta una nueva fila en la segunda fila

SS.AddRow(testRow, 6, true //Reemplaza la cuarta fila original con una nueva fila

SS.AddCell("Xu Jingzhou", 1, 2); // Agrega (no existe) o reemplaza (no existe) el contenido de la celda en la segunda fila y la primera columna

SS.p >SS.Commit();

V. Consultar las filas, columnas y celdas de datos existentes en la tabla de Excel

void CExcelAccessDlg::OnQuery()

{

CSpreadSheet SS("c:\\Test.xls", "TestSheet");

CStringArray Filas, Columna

CString tempString = " ";

UpdateData();

if(m_strRow == "" amp; amp; m_ strColumn

== "") // La consulta está vacía

{

AfxMessageBox("¡Los números de fila y columna no pueden estar vacíos!") )

Retorno;

}

else if(m_strRow == "" amp;amp; m_strColumn ! = "") // Consulta la columna especificada

{

int iColumn = atoi(m_strColumn);

int iCols = SS.GetTotalColumns();

if(iColumn gt; iCols) // Al realizar consultas más allá del rango de la tabla

{

CString str;

str.Format("El número total de columnas de la tabla es: d, ", iCols

);

AfxMessageBox(str "El número de columnas consultadas es mayor que el número total de columnas en la tabla de Excel, ¡vuelva a ingresar!") )

Retorno

}

// Lee una columna de datos y lee fila por fila

if(!SS.ReadColumn(Column, iColumn))

{

AfxMessageBox(SS.ReadColumn(Columna, iColumna))