0

だから私は仕事のためにこのことに取り組んでいます.Excelの指示リストをより見栄えの良いフォーマットされたWord文書に変換します. 私はExcelドキュメントに接続してから、アクセスしやすいようにファイルをデータテーブルに保存しています。

エラーが発生し始めたとき、Word文書の境界線などをようやく正しく取得したところです。 External table is not in the expected format.

完全な接続アルゴリズムは次のとおりです。

 public static DataTable getWorkSheet(string excelFile =
            "C:\\Users\\Mitch\\Dropbox\\Work tools\\Excel for andrew\\Air Compressor PM's.xlsx") {
            string connection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile
                                + ";Extended Properties='Excel 8.0;HDR=YES;'";
            string sql = null;
            string worksheetName = null;
            string[] Headers = new string[4];
            DataTable schema = null;
            DataTable worksheet = null;
            DataSet workbook = new DataSet();
            //Preparing and opening connection
            OleDbConnection objconn = new OleDbConnection(connection);
            objconn.Open();
            //getting the schema data table
            schema = objconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            worksheetName = schema.Rows[0]["Table_Name"].ToString();
            //Each worksheet will have a varying name, so the name is just called from
            //the dataTable.rows array. Can be later modified to use multiple
            //worksheets within a workbook.
            sql = "SELECT * FROM[" + worksheetName + "]";

            //data adapter
            OleDbDataAdapter objAdapter = new OleDbDataAdapter();
            //pass the sql
            objAdapter.SelectCommand = new OleDbCommand(sql, objconn);
            //populate the dataset
            objAdapter.Fill(workbook);
            //Remove spaces from the headers.
            worksheet = workbook.Tables[0];
            for (int x = 0; x < Headers.Count(); x++) {
                Headers[x] = worksheet.Columns[x].ColumnName;
                worksheet.Columns[x].ColumnName = worksheet.Columns[x].ColumnName.Replace(" ", "");
            }
            return worksheet;            
        }//end of getWorksheet

編集:私はドロップボックスの以前のバージョンから私の古いコードを引き出しました. 私のコンピューターで何かが変わったのですか?

4

1 に答える 1

1

2007/2010 Excel ファイル (*.xlsx、*.xlsm) に接続しています。無料でダウンロードできる最新の 2010 ドライバー (Ace) が必要です。正しい接続文字列は、http://connectionstrings.com/Excelおよびhttp://connectionstrings.com/Excel-2007から取得できます。

于 2012-07-04T10:34:04.580 に答える