我正在尝试阅读包含由宏生成的数据透视表的excel表,其中包含以下连接字符串:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path;
Extended Properties="Excel 8.0;HDR=NO;";
问题是这些值不会出现在我的数据集中,只出现在列和行的标签上,而不是必需的值。
有没有想过阅读这样的文件?
答案 0 :(得分:1)
我不知道答案,但也许Epplus(http://epplus.codeplex.com/)可以帮到你。
答案 1 :(得分:1)
我不知道为什么,但通过将提供程序更改为Provider=Microsoft.ACE.OLEDB.12.0
,可以正确读取数据。
填充数据集较慢,但我得到了我正在寻找的东西 感谢
答案 2 :(得分:0)
这将读取和excel表到C#中的数据表。 '片材'是Excel中工作表的名称,startfromrow是您希望从中读取表的位置。 excelTable是存储数据的数据表。
public void ReadEx(string sHeet, int startfromrow)
{
excelTable.Clear();
string excelFile = "filepath";
Excel.Application excel = new Excel.Application();
Excel.Workbook wb = excel.Workbooks.Open(excelFile);
Excel.Worksheet pivotWorkSheet = (Excel.Worksheet)wb.Sheets[sHeet];
Excel.Range xlRange = pivotWorkSheet.UsedRange;
int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;
if (excelTable.Columns.Count <= 0)
{
excelTable.Columns.Add("Row Labels");
foreach (string column in lColumns)
{
excelTable.Columns.Add(column);
}
}
object[] exrow = new object[colCount];
for (int i; startfromrow <= rowCount; row++)
{
for (int j = 1; j <= colCount; j++)
{
exrow[j-1] = xlRange.Cells[startfromrow , j].Text;
Console.WriteLine(xlRange.Cells[startfromrow , j].Text);
}
excelTable.Rows.Add(exrow);
}
答案 3 :(得分:0)
我对user3644719的答案做了一些修改。在他/她的回答中,有一些拼写错误,比如代码中未定义的变量。
String sHeet = "Pivot";
DataTable excelTable = new DataTable();
excelTable.Clear();
string excelFile = "C:\\test_pivot.xlsx";
Excel.Application excel = new Excel.Application();
Excel.Workbook wb = excel.Workbooks.Open(excelFile);
Excel.Worksheet pivotWorkSheet = (Excel.Worksheet)wb.Sheets[sHeet];
Excel.Range xlRange = pivotWorkSheet.UsedRange;
int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;
string[] lColumns = new string[2] { "Column1","Column2" };
if (excelTable.Columns.Count <= 0)
{
foreach (string column in lColumns)
{
excelTable.Columns.Add(column);
}
}
Object[] exrow = new object[colCount];
for (int row=1; row <= rowCount; row++)
{
for (int j = 1; j <= colCount; j++)
{
exrow[j - 1] = xlRange.Cells[row, j].Text;
Console.WriteLine(xlRange.Cells[row, j].Text);
}
excelTable.Rows.Add(exrow);
//excelTable.Rows.Add(exrow);
}
String str = excelTable.ToString();
}